フォーム
ファイルを選択してテキストボックスに表示する方法を例示しましたが、ファイルを複数選択した場合、テキストボックスには表示しきれません。
この場合、テキストボックスの代わりに下記のようにリストボックスを活用します。(参考:コンボボックスの活用)
フォルダの取得方法
フォームの作成方法は割愛し、下記のようにファイルを複数選択した場合・・・
下記のように、選択したファイルをリストボックスに表示します。
Dim i As Long
'フォルダ選択のダイアログを表示する
With Application.FileDialog(msoFileDialogFilePicker)
'複数選択可
.AllowMultiSelect = True
'フィルター:ファイル種類
With .Filters
.Clear
.Add "Microsoft Excel", "*.xls?"
.Add "text", "*.txt"
.Add "All File", "*.*"
End With
'OKを押した場合
If .Show = True Then
'リストボックスの情報クリア
With lstFileName
.Clear
End With
'選択したファイルをリストボックスに登録
For i = 1 To .SelectedItems.Count
lstFileName.AddItem .SelectedItems(i)
Next i
'リストボックスの先頭行を選択
lstFileName.Selected(0) = True
End If
End With
'フォルダ選択のダイアログを表示する
With Application.FileDialog(msoFileDialogFilePicker)
'複数選択可
.AllowMultiSelect = True
'フィルター:ファイル種類
With .Filters
.Clear
.Add "Microsoft Excel", "*.xls?"
.Add "text", "*.txt"
.Add "All File", "*.*"
End With
'OKを押した場合
If .Show = True Then
'リストボックスの情報クリア
With lstFileName
.Clear
End With
'選択したファイルをリストボックスに登録
For i = 1 To .SelectedItems.Count
lstFileName.AddItem .SelectedItems(i)
Next i
'リストボックスの先頭行を選択
lstFileName.Selected(0) = True
End If
End With
リストの表示方法を変更する
下記のようにプロパティの【ListStyle】を「0 - fmListStylePlain」から「1 - fmListStyleOption」に変更します。
すると、下記のようにラジオボタン表示となります。(複数選択できないため)
下記のようにプロパティの【MultiSelect】を「0 - fmMultiSelectSingle」から「1 - fmMultiSelectMulti」に変更します。
すると、下記のようにラジオボタンからチェックボックスに変わります。
選択した情報の取得方法
上記のように複数選択可能な場合、リストに表示されている件数分ループ処理を行い、それぞれチェックされたか判定をする必要があります。
Dim i As Long
Dim strData As String
'リストボックスに登録された件数分ループする
For i = 0 To lstFileName.ListCount - 1
'対象データが選択されている場合
If lstFileName.Selected(i) = True Then
'表示対象として変数に取得する
strData = strData & lstFileName.List(i) & vbCrLf
End If
Next i
'メッセージボックスで選択データを表示
MsgBox strData
Dim strData As String
'リストボックスに登録された件数分ループする
For i = 0 To lstFileName.ListCount - 1
'対象データが選択されている場合
If lstFileName.Selected(i) = True Then
'表示対象として変数に取得する
strData = strData & lstFileName.List(i) & vbCrLf
End If
Next i
'メッセージボックスで選択データを表示
MsgBox strData
結果は下記のようにになります。