【VBA】ダイアログでファイルを複数選択する方法
今回はダイアログでファイルを複数選択する方法を紹介します。
Application.GetOpenFilenameメソッドを使うのですが、1つ注意点があります。
ダイアログでファイルを複数選択するサンプルコード
Sub SelectFiles()
'複数のファイルを選択⇒ファイル名をイミディエイトウィンドウに表示
Dim files as Variant
files = Application.GetOpenFilename( _
filefilter:="All Files (*.*), *.*", _
MultiSelect:=True)
'ファイル名を選択していない場合の処理
'選択している場合は配列になることを利用
If Not IsArray(files) Then MsgBox "ファイルを選択していません": Exit Sub
'選択したファイル名をイミディエイトウィンドウに表示
Dim file
For Each file In files
Debug.Print file
Next
End Sub
このコードは、複数選択できるダイアログを表示して、選択したファイル名をイミディエイトウィンドウに表示します。
Application.GetOpenFilenameにはMultiSelectという引数があり、これをTrueにすると複数選択が可能になります。
注意点:返り値は配列
通常Application.GetOpenFilenameメソッドの返り値はString型なのですが、複数選択を可能にすると返り値は配列になります。(ファイルを1つだけ選択しても配列が返される)
そのため、返り値を受け取る変数はVariant型としましょう。(サンプルコードではfiles変数)
'ファイル名を選択していない場合の処理
'選択している場合は配列になることを利用
If Not IsArray(files) Then MsgBox "ファイルを選択していません": Exit Sub
また、ファイルを選択していない場合はFalseが返されるため、IsArray関数でファイルが選択されなかった場合の処理を書くことができます。