Excel VBA UserForm パスワード生成管理ツール

スポンサーリンク

パスワード管理の考え方等については【過去記事】で取り上げています。是非こちらを参照してください。

記事では、Excelシートを使っていましたが、UserFormを使ったパスワード生成管理(以下「PW生成管理」とします)ツールを個人使用の目的で作成しようと思いたちました。

くるみこ
くるみこ

これまで、作成までの過程を UserForm についての記事で複数回に渡って勉強してきました。今回は今までの総括を行いながらツールを仕上げていきたいと思います。

わかりました! 今までの復習もしながらということですね。仕上がりが楽しみです! よろしくお願いしますm(__)m

【この記事でわかること
・UserForm「PW生成管理ツール」のソフトとしての動作設定
・動作オプション保存用の「Setting」シートを設置して使う方法がわかります
UserForm 終了時に Excel も終了させる方法がわかります

前回記事のおさらいは、下のカードをクリックすれば開きます(^^ゞ

くるみこ
くるみこ

前回記事は、Excelを非表示にしてUserFormだけで表示する方法と注意点やリスクについて。ExcelをUserFormの後ろに隠してドラッグしても追従させる方法について解説しています。是非覗いてみてね(^^)/

スポンサーリンク

「PW生成管理ツール」の動作フローを整理します

【基本的な動作の流れ】

1 Excelファイルを起動
2 Excelの動作設定シート「Setting」から動作設定項目を取得・適用します
3 UserForm 表示(設定どおりのモードで起動します)
4 Excelを UserForm うしろに隠す(Excel非表示に設定している場合表示を消します)
5 UserForm でPW設定操作を行います
6 UserForm の「設定シート」で作成できたPWをコピーして使用します
7 UserForm 終了(終了ボタンでフォームを閉じます)
8 Excelを元のサイズに戻す(Excelが元のサイズに戻ります)
9 Excelも終了させるオプションが選択されている場合はExcelも終了させます
 (変更が保存されていなければ保存してから終了します)

・ざっくりとこんな感じです(^^ゞ

では早速設定していきましょう。
今まで設定してきた機能に不足している部分を追加すれば完成です。
今回追加する部分は「起動時に動作設定を読み込むようにする機能」と「起動・終了時の動作設定」です。さっそく追加していきましょう

起動・終了時の動作を変更できるようにします

動作設定用のPage「Setting」を追加します

必要なコントロールを設置していきます。追加する項目は次のとおりです。

「Setting」に必要なコントロールを設置します

・Excelブック(ワークシート)の表示 (オプションボタンを3つ設置)
  Excelシートを表示するか表示しないか(UserFormだけで表示するか)など
・UserForm起動時オプション設定(オプションボタンを2つ設置)
  モダールかモードレスかを選択させるます。
・UserFormの表示位置を指定(オプションボタンを3つ設置)
  前回表示位置・画面中央・Excel中央を選択させます。
・UserForm終了時のExcelの動作(オプションボタンを2つ設置)
  Excel同時に終了するか、終了しないかを選択させます。
・説明用の Label と グループ分け用に Frameコントロールを4つ使いました。

・これにあわせて、この設定を保存しておくExcelシートのセル範囲を確保する必要があります。
・次の設定保存用シート「Setting」を追加しました。

シート名は「Setting」としています


・フォーム表示位置記憶用のセル Leftは「B5」Topは「B6」も用意しておきます。

VBAで「Setting」の動作を設定します

・UserForm_Initialize から Sub Setting_Initialize() を呼び出すようにしています。

'最初(表示前)に実行される
Private Sub UserForm_Initialize()
    'Settingシートから設定を読み込み反映させる
    Call Setting_Initialize
End Sub
'Settingを反映させる
Sub Setting_Initialize()
    Dim SetValue(2 To 7) As Variant
    Dim i As Long
    With ThisWorkbook.Sheets("Setting")
        For i = 2 To 7
            If .Cells(i, 2).Value <> Empty Then
                SetValue(i) = .Cells(i, 2).Value
            Else: SetValue(i) = 1
            End If
        Next
    End With
    With fmPW_Make.MultiPage1.page4
        .Controls("OptExcel" & SetValue(2)) = True
        .Controls("OptMode" & SetValue(3)).Value = True
        .Controls("OptForm" & SetValue(4)).Value = True
        fmPW_Make.Left = SetValue(5)
        fmPW_Make.Top = SetValue(6)
        .Controls("OptEnd" & SetValue(7)).Value = True
    End With
End Sub

・Excelの「Setting」シートから設定を配列に読み込んみます。
UserForm の Page4「Setting」のコントロールに値を代入しています。
・下の動作GIF画像で、オプション変更でシートの値が変わるのことが確認できます。

UserForm表示モードと終了時の設定

・UserForm表示モードと終了時の設定を「Setting」から取得して処理を行います。

ブックが変更されていたら保存して終了するコード

・下のコードはWorkbook_Openから UserForm を表示した場合のコードです。
コマンドボタンから実行した場合のイベントにも同じコードを設定します。

Private Sub Workbook_Open()
    If Sheets("Setting").Range("B3") = 2 Then
        fmPW_Make.Show vbModeless
    Else
        fmPW_Make.Show vbModal
    End If
    If Sheets("Setting").Range("B7") = 1 Then
        If ThisWorkbook.Saved = False Then
            ThisWorkbook.Save
        End If
        '他のブックが開いていない場合はExcelを閉じる
        If Workbooks.Count = 1 Then
            Application.Quit
        Else: ThisWorkbook.Close
        End If
    End If
End Sub

開いているブックの数をカウントして自身以外に開いていない場合はExcelを終了します
・この確認をしないでExcelを終了した場合、開いているブックが全部消えてしまいます
複数開いている場合は、自ブックのみ閉じるようにします
・逆に開いているのが自ブックだけなのに自ブックを閉じた場合、空のExcelが残ってしまいます

これで機能的には完成です。まだまだ細かいテストは不十分なので、実際に使用しながら気づいた点を修正するようにしていこうと思います。

ListView と ListBox の両方はいらない

・出来上がった「PW生成管理ツール」ですが、比較するために ListBoxListView の両方を設置しています。
・これまでに比較検証を行いましたが、列ソートの部分で ListView の方に分があります。
・今後、リスト数が増えてきた時にその便利さの違いが顕著になってくるように思います。
・というわけで、ListBox を削除して ListView だけを残したファイルを正式版としました。
ListBox 削除前ファイルはSample版として扱います。

・ここまで、UserForm に関することについてひととおり継続して勉強してきました。
・「PW生成管理ツール」が出来上がった今回の記事で、ひとまず UserFormに関することは一区切りとします!

スポンサーリンク

まとめ(おわりに)

・いかがでしたでしょうか?
・今回も、記事内で使用したコードのサンプルファイルを登録していますのでご利用ください。
今までの記事のサンプルも登録していますのでよろしければお使いください(^^)

まとめと感想など

くるみこ
くるみこ

UserForm に関する勉強はここで一区切りとします。思ったより長くかかりましたね(^^; 今回を含めて21回にわたって勉強しました。いかがでしたか?

そうですね、一度ボタンを追加してみたら、サイズも小さくなって密集してるのでカッコ悪くなっちゃいましたよね(^^;
次回はどんな内容になるのか楽しみです(^^♪

くるみこ
くるみこ

PW生成管理ツール」の動作検証や修正があった場合はその都度お知らせしたいと思っています。

次回はどうしようかまだ悩んでいます。なるべく早く再開しますので楽しみにしていてね(^^)/

【今回わかったことは】
・「Setting」シートの値で、起動・終了時の動作を変更できるようにしました
・UserForm 終了時に Excel も終了させる方法がわかります

★★★ ランキング参加中! クリックしてね(^^)/ ★★★

今後の記事について

今回の記事はいかがだったでしょうか。皆さまのお役に立てたなら幸いです(^^;
「汎用でだれでも使えて活用できるように考えてVBAを使う」というポリシーで、記事を継続して書いていきたいと思っています。どうぞよろしくお願いしますm(_ _)m

【検討中の今後の記事内容は・・・・・】
・実務に役立つものを提供できるよう常に検討しています(^^ゞ
・その他雑記的に「プチネタなど」もいろいろ考えていきたいと思います・・・・・
・今後の記事にもご期待ください(^^)/

記事のサンプルファイルをダウンロードできます

今回の記事のサンプルをダウンロードできるようにしています
過去の記事で使用したサンプルファイルがダウンロードできるページを設置しています
こちら(このリンク先)からご利用ください