ファイル選択ダイアログの表示とファイルのパス取得

ファイル選択ダイアログを表示し、ダイアログで選択したファイルのパスを取得する。

GetOpenFilenameメソッド を利用してファイルを選択するダイアログボックスを表示させます。
このダイアログボックスでファイルを選択するとファイルのあるフルパスを取得できます。
ダイアログボックスでファイルを選択しなかった(キャンセルを選択した)場合は、False が戻り値として返されます。

GetOpenFilenameには下記の引数が設定できます。

引数名説明省略
第1引数FileFilterファイルの候補を指定する文字列を指定
規定値:「”すべてのファイル (*.*)”」
第2引数FilterIndexフィルタされたリストで初期値とするリストを番号で指定
規定値:1
第3引数Titleダイアログ ボックスのタイトルを指定します
規定値:”ファイルを開く” “
第4引数ButtonTextWindowsでは利用しない(Macでのみ利用します)
第5引数MultiSelect複数選択の有無
True:あり、False:なし(規定値)

引数のFileFilterを利用することで、ダイアログボックスに表示させたいファイルを拡張子で絞ることができ、拡張子の指定にはワイルドカードも利用できます。
複数のフィルタを指定する場合は、1セット(※1)ごとに”,”で区切ることで複数指定できます。
サンプルコードでは3種類(Excel、PDF、すべてのファイル)のフィルタを指定しています。
  ※1:「ファイル種類の文字列 , ファイルの拡張子」で1セットになります。

引数の MultiSelect に True を指定した場合、戻り値となるファイルパスの文字列は配列として取得されます。(False の場合は文字型で取得)
True とした場合、戻り値を取得するコードに違いがあるのでMultiSelect に True を指定した場合は下記のリンクのサンプルコードを参考にしてください。

ファイル選択ダイアログの表示と複数ファイルのパス取得

 

'***********************************************************************
' ファイル選択ダイアログを表示し、選択したファイルのパスを取得する
'***********************************************************************
Sub openFileSelectDialog()
    
    'カレントフォルダを設定
    ChDir "C:\VBA\Test"
    
    'ダイアログを表示(名前付き引数)&パス取得
    Dim vSelectFile As Variant
    vSelectFile = Application.GetOpenFilename _
        (FileFilter:="Excel Files ,*.xls*," & _
                     "PDF Files, *.pdf," & _
                     "全てのファイル, *.*", _
         FilterIndex:=1, _
         Title:="タイトル", _
         MultiSelect:=False)
    
    'ダイアログの戻り値を確認。(MultiSelect:=False の場合)
    If vSelectFile = False Then
        '"False"の場合はファイル選択されていない。
        Debug.Print "ファイルが選択されていません。"
    Else
        '選択したファイルのフルパス
        Debug.Print "選択されたファイルのパス"
        Debug.Print vSelectFile
    End If

End Sub

 ■実行結果