VBAを利用してファイルの選択ダイアログの表示とファイルのフルパスを取得する方法です。
ファイルの選択ダイアログの表示にはGetOpenFilename関数を利用します。
以下は、ボタンが押されると選択ダイアログを表示させて、選択されたファイル名のフルパスを表示させるサンプルプログラムです。
1.ファイルパスを入力するセルを『B2』とします。
2.次に、プログラムを実行させるためのボタンを作ります。
例では、ボタンのCaption(表示名)を『ファイルを選択』オブジェクト名を『btnGetFilePath』としました。
3.Visual Basic Editor を起動して、Sheet1に以下のコードを書いて保存します。
実際にファイル選択ダイアログを表示しているコードは、fPath = Application.GetOpenFilename(fType, , prompt)になります。
'ファイルの選択ダイアログを表示して
'ファイルのパスを取得します
Private Sub btnGetFilePath_Click()
Dim fType, prompt As String
Dim fPath As Variant
Dim ws As Worksheet
Set ws = Worksheets("Sheet1")
'選択できるファイルの種類をxlsに限定
fType = "Excel ファイル (*.xls),*.xls"
'ダイアログのタイトルを指定
prompt = "Excelファイルを選択して下さい"
'ファイル参照ダイアログの表示
fPath = Application.GetOpenFilename(fType, , prompt)
If fPath = False Then
'ダイアログでキャンセルボタンが押された場合は処理を終了します
End
End If
'B2セルにファイル名をセット
ws.Cells(2, 2).Value = fPath
End Sub
※緑色の部分はコメントです。
これで『ファイルの選択』ボタンが押されるとプログラムが実行されます。
ボタンを押すと下のように選択ダイアログが表示されます。
ここでキャンセルボタンが押されると、そのままプログラムが終了します。
開くボタンを押して下のようにセル『B2』にファイルのフルパスが表示されれば成功です。
今回は『fType = "Excel ファイル (*.xls),*.xls"』の部分で、選択できるファイルの種類をxlsに限定しています。
選択出来るファイルの種類を増やしたい時は、GetOpenFilenameの引数に『プルダウン表示名,拡張子,プルダウン表示名,拡張子・・・』とすることで幾つも指定する事ができます。
上記サンプルソースでは以下のように記載します。
fType = "Excel ファイル (*.xls),*.xls,Excel ファイル (*.xlsx),*.xlsx"
また、何も指定しなければ、全てのファイルを対象にする事が出来ます。
fType = ""