【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関数でファイルが選択されなかった場合の処理を書くことができます。

《VBA中級者向けの本》
VBA上級者を目指したい人にはパーフェクトExcel VBA一択です。

created by Rinker
技術評論社
¥3,608 (2022/08/08 12:24:02時点 Amazon調べ-詳細)

《マクロ作成に困ったら》
自分で作るのが難しいと感じたら、プロに作ってもらう手もあります。
マクロ(VBA)の依頼におすすめのプログラマーを紹介の記事をご覧ください。

他の「VBA」の記事はこちらからどうぞ

VBA

Posted by やろまい