ファイル選択ダイアログで選択した複数のファイルのパスを取得する。
GetOpenFilenameメソッド を利用してファイルを選択するダイアログボックスの表示と選択したファイルのあるパスを取得できますが、引数のMultiSelectにTrueを指定することでダイアログボックスから複数のファイルを選択することができます。
MultiSelectを True とした場合、ダイアログで選択したファイルのパスは戻り値は配列として取得されます。
MultiSelectに False を指定した場合の戻り値は文字型で返されますが、True にした状態で1つのファイルしか選択しなかった場合も戻り値は配列として取得されます。
'***********************************************************************
' ファイル選択ダイアログを表示し、選択したファイルのパスを取得する
' ※複数ファイル選択あり
'***********************************************************************
Sub openFileSelectDialog_Multi()
'カレントフォルダを設定
ChDir "C:\VBA\Test"
'ダイアログを表示(ファイルの複数選択可)
Dim vSelectFile As Variant
vSelectFile = Application.GetOpenFilename _
(FileFilter:="Excel Files ,*.xls*,PDF Files, *.pdf,全てのファイル, *.*", _
FilterIndex:=1, _
Title:="タイトル", _
MultiSelect:=True)
'戻り値が配列か確認
' ※マルチセレクトの場合、ファイルのパスは戻り値は配列に格納される。
' キャンセルされた場合はFalseとなる。
If IsArray(vSelectFile) Then
'配列の中身を順番に取得
Debug.Print "選択されたファイルのパス"
Dim vSelect As Variant
For Each vSelect In vSelectFile
'選択したファイルのフルパス
Debug.Print vSelect
Next
Else
'ファイルが選択されなかった場合は戻り値に"False"が設定されます。
Debug.Print "ファイルが選択されていません。"
End If
End Sub
■実行結果




