VBAでファイルを扱う際に、ダイアログボックスを開いてファイルを選択する方法を、ご説明いたします。
方法①:GetOpenFilenameメソッド
この方法は、Excel専用です。Accessでは使用できません。
構文
Application.GetOpenFilename(FileFilter, FilterIndex, Title, ButtonText, MultiSelect)
引数
引数 | 必須/任意 | 説明 |
---|---|---|
FileFilter | 任意 | ファイルの候補を指定する文字列 (ファイル フィルター文字列) を指定します。 |
FilterIndex | 任意 | FileFilter で指定したファイル フィルター文字列の中で、 1 から何番目の値を既定値とするかを指定します。 この引数を省略するか、ファイル フィルター文字列の数より大きい数値を指定すると、 最初のファイル フィルター文字列が既定値となります。 |
Title | 任意 | ダイアログ ボックスのタイトルを指定します。 この引数を省略すると “ファイルを開く” になります。 |
ButtonText | 任意 | Macintosh でのみ指定できます。 |
MultiSelect | 任意 | True を指定すると、複数のファイルを選択できます。 False を指定すると、1 つのファイルしか選択できません。 既定値は False です。 |
戻り値
上記メソッドを実行すると、選択されたファイルのフルパスが、戻り値として返されます。
なお、ダイアログボックスで[キャンセル]ボタンをクリックすると、戻り値に「False」が返されます。
使用例①:引数を指定しない場合
Dim FileName As String
'ダイアログボックスを開く
FileName = Application.GetOpenFilename
'FileNameを使う処理
MsgBox FileName
実行結果


(ファイルを選択)

選択したファイルのフルパスが返された

使用例②:引数を指定する場合
よく使う引数として、FileFilterとTitleを指定したサンプルをご紹介いたします。
引数FileFilterでは、ダイアログボックスに表示したい文字列と、ワイルドカードを、下記の例のようにカンマ(,)で区切ります。
Dim FileName As String
FileName = Application.GetOpenFilename(FileFilter:="テキストファイル,*.txt", _
Title:="テキストファイルを選択して下さい")
MsgBox FileName
実行結果
以下のように、「*.txt」に該当するファイルのみが表示され、ダイアログボックスのタイトルも設定されました。

初期表示されるフォルダについて
ダイアログを開いたときに初期表示されるフォルダは、PCに依存します。
初期表示されるフォルダを指定するには、以下のように
ChDir フォルダ名
を事前に実行する必要があります。
Dim FileName As String
ChDir "c:\work"
FileName = Application.GetOpenFilename
MsgBox FileName
方法②:FileDialogオブジェクト
この方法は、Excel・Accessともに使用可能です。
また、GetOpenFilenameよりも、色々な制御ができます。
構文
Application.FileDialog(fileDialogType)
引数
以下のいずれかの定数を指定します。
定数 | 説明 |
---|---|
msoFileDialogFilePicker | ファイルを選択する |
msoFileDialogFolderPicker | フォルダを選択する |
msoFileDialogOpen | ファイルを開く ※Excel専用 |
msoFileDialogSaveAs | ファイルを保存する ※Excel専用 |
補足説明
様々なプロパティを設定して、ダイアログボックスを制御できます。
以下の使用例に載せたプロパティを知っていれば、十分かと思います。
もちろん、全て設定する必要は無く、必要なプロパティだけ設定すれば良いです。
プロパティの説明を、コメントに記述しておきました。
Showメソッドを実行すると、ダイアログボックスが表示されます。
[開く]がクリックされると True が返され、[キャンセル]がクリックされると False が返されます。
Showメソッドでダイアログボックスを表示後に、Executeメソッドを実行すると、以下の処理が行われます。
- Excelで引数にmsoFileDialogOpenを指定した場合は、選択したファイルが開かれます。
- Excelで引数にmsoFileDialogSaveAsを指定した場合は、ダイアログボックスで指定したファイル名で、ブックが保存されます。
- 上記以外の引数、およびAccessの場合にExecuteメソッドを実行すると、エラーになります。
使用例
With Application.FileDialog(msoFileDialogOpen)
'表示するファイルの種類を設定
.Filters.Clear
.Filters.Add "テキストファイル", "*.txt"
'初期表示されるフォルダを指定 ※後ろに「\」が必要です
.InitialFileName = "C:\work\"
'複数選択を許可しない ※「True」で許可します
.AllowMultiSelect = False
'ダイアログボックスのタイトルを指定
.Title = "ファイルを選択して下さい"
‘ダイアログボックスを表示
If .Show = True Then
'[開く]がクリックされた場合
'ファイルを開く
.Execute
'選択されたファイルのフルパスを表示
MsgBox .SelectedItems(1)
Else
'[キャンセル]がクリックされた場合
MsgBox "キャンセルされました。"
End If
End With
実行結果


(ファイルを選択)

選択したファイルが開かれた


選択したファイルのフルパスが返された

コメント