このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

【VBA】ダイアログでファイルを複数選択する方法

2024年4月6日

ダイアログでファイルを複数選択する方法

今回はダイアログでファイルを複数選択する方法を紹介します。

Application.GetOpenFilenameメソッドを使うのですが、1つ注意点があります。

VBAが難しいと感じたら
プロにお任せして代わりに作ってもらうのはいかがでしょうか?
マクロの作成請負をしていますので、こちらからご相談ください。

ダイアログでファイルを複数選択するサンプルコード

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

Posted by やろまい