ファイル選択ダイアログを表示してファイルパスを取得する
下画像のようなファイル選択ダイアログを表示して、ユーザが指定したファイルのパスを取得する VBA マクロについて記載します。
![](https://dicengineer.com/wp-content/uploads/2023/04/vba-selectfile-01.jpg)
ファイル選択ダイアログを表示してファイルパスを取得するマクロ
以下のように記述することで、ファイル選択ダイアログを表示し、選択されたファイルのパスを変数に格納できます。
Sub sample()
Dim myFile As Variant
myFile = Application.GetOpenFilename("すべてのファイル(*.*),*.*")
End Sub
解説
以下の Variant 型の変数 myFile
は、取得したファイルパスを格納するための変数です。
Dim myFile As Variant
以下の行でファイル選択ダイアログを表示します。同時に、ユーザが選択したファイルのパスを変数 myFile
に格納します。
myFile = Application.GetOpenFilename("すべてのファイル(*.*),*.*")
なお、ファイル選択ダイアログでファイルの選択をキャンセルした場合は、変数 myFile
に False
が格納されます。
使用例
以下のようにファイル選択ダイアログを表示した後、メッセージボックスで変数 myFile
の値を表示してみます。
Sub sample()
Dim myFile As Variant
myFile = Application.GetOpenFilename("すべてのファイル(*.*),*.*")
MsgBox myFile
End Sub
ファイル選択ダイアログで適当なファイルを選択した場合、変数 myFile
の値は以下のように選択したファイルのパスになります。
![](https://dicengineer.com/wp-content/uploads/2023/04/vba-selectfile-02.jpg)
ファイル選択ダイアログでファイルの選択をキャンセルした場合、変数 myFile
の値は以下のように False
になります。
![](https://dicengineer.com/wp-content/uploads/2023/04/vba-selectfile-03.jpg)
なお、この False
は Boolean 型の値です。
ファイル選択ダイアログでファイルが選択された場合のみ何かの処理をしたい場合、以下のように If 文で条件式に myFile <> False
と記述することで実現できます。
Sub sample()
Dim myFile As Variant
myFile = Application.GetOpenFilename("すべてのファイル(*.*),*.*")
If myFile <> False Then
MsgBox myFile
End If
End Sub
![](https://dicengineer.com/wp-content/uploads/2021/07/vba-roadmap-head-300x172.jpg)