ユーザーフォーム上でフォルダを選択する
昨日までの「指定パス直下のフォルダ名を取得する」は、末端にあるファイルを簡単に選択するための仕掛けだ。
infoment.hatenablog.com
ユーザーフォーム上のリストボックスで選択したフォルダについて、その隣のリストボックスにサブフォルダ一覧を表示する。
実際には、↓のようになる(※最終形ではない)。
今回は左から順に、絞り込みを行う仕様とする。
ユーザーフォーム(SelectFileForm)
先日クラスモジュールを作りこんであるため、ユーザーフォームの初期化は、割と簡素に済んでいる。
Option Explicit Const FolderPath As String = "C:\Temp" Dim SQC As SequenceClass Private Sub UserForm_Initialize() Set SQC = New SequenceClass FolderListBox1.List = SQC.GetSubFoldersSeq(FolderPath) FolderPathLabel = FolderPath End Sub
サブフォルダ名をまとめて配列化し、そのままリストボックスにセットしている。また、現時点でのフルパスをラベルに反映させている。
次いで、一番左のリストボックスをクリックしたときの挙動を設定する。
- 左:FolderListBox1
- 中:FolderListBox2
- 右:FileListBox
Private Sub FolderListBox1_Click() Dim FullPath As String FullPath = FolderPath & "\" & FolderListBox1.Value With FolderListBox2 .Clear .List = SQC.GetSubFoldersSeq(FullPath) End With FileListBox.Clear FolderPathLabel = FullPath End Sub
最後に、真ん中のリストボックスをクリックしたときの挙動を設定する。
※前回配列化したのはサブフォルダまでであって、ファイル名は未対応。
Private Sub FolderListBox2_Click() Dim FullPath As String FullPath = FolderPath & "\" & _ FolderListBox1.Value & "\" & _ FolderListBox2.Value FolderPathLabel = FullPath End Sub
実際に動かしてみると、↓ このようになる。
割と、直感的に選べるようになっていると思う。
明日は、右のリストボックスにファイル一覧を表示するところから再開します。
参考まで。