『GetOpenFilenameメソッド』は
- [ファイルを開く]ダイアログボックスでユーザーが指定したファイルを開く
- [ファイルを開く]ダイアログボックスでユーザーが指定したファイルのファイル名とフルパスを得る
という用途でよく使われる関数です。
この関数について説明します。
構文

GetOpenFilenameメソッドの構文は以下のようになります。
Object.GetOpenFilename(FileFilter, FilterIndex, Title, ButtonText, MultiSelect)
引数は5つあります。
パラメータ
| パラメータ | 省略可能か? | データ型 | 内容 |
| Object | × | ー | Applicationオブジェクト |
| FileFilter | 〇 | Variant型 | ファイルの種類を指定する文字列(ファイルフィルタ文字列)を指定します。この引数を省略するとファイルの種類は「"すべてのファイル (*.*),*.*"」になります。 |
| FilterIndex | 〇 | Variant型 | 引数「FileFilter」で指定した「ファイルフィルタ文字列,ワイルドカードのペア」において、何番目のペアを既定値とするかを指定します。この引数を省略するか、「ファイルフィルタ文字列,ワイルドカードのペア」のペア数より大きな値を指定すると、1番目の「ファイルフィルタ文字列,ワイルドカードのペア」が規定値となります。 |
| Title | 〇 | Variant型 | [ファイルを開く]ダイアログボックスのタイトルを指定します。この引数を省略すると、”ファイルを開く" になります。 |
| ButtonText | 〇 | Variant型 | Macintoshのみ指定できます。 |
| MultiSelect | 〇 | Variant型 | TrueかFalseを指定します。Trueを指定した場合、複数ファイルを選択できるようになります。Falseを指定した場合1つのファイルしか選択できません。この引数を省略すると、”False " になります。 |
戻り値
Variant型です。
[ファイルを開く]ダイアログボックスで指定したファイルのフルパスを返します。
使い方

と記載すると、[ファイルを開く]ダイアログボックスを開くことができます。
ただこれだけでは、[ファイルを開く]ダイアログボックスからファイルを選択しても何も起こりません。

と記載することで、[ファイルを開く]ダイアログボックスで選択したファイルのフルパスを変数に格納することができます。
具体的なプログラム例を次に示します。
プログラム例
[ファイルを開く]ダイアログボックスでユーザーが指定したファイルを開く
Sub ユーザーが指定したファイルを開く()
Dim OpenFileName As String
OpenFileName = Application.GetOpenFilename(FileFilter:="Excelファイル,*.xlsx")
If OpenFileName <> "False" Then
Workbooks.Open OpenFileName
Else
MsgBox "キャンセルされました"
End If
End Subのように記述すると[ファイルを開く]ダイアログボックスでユーザーが指定したファイルを開くことができます。具体的な使用方法は
-

【VBA】[ファイルを開く]ダイアログボックスを用いてファイルを開く方法
に詳しく記載しているので参考にしてください。
[ファイルを開く]ダイアログボックスでユーザーが指定したファイルのファイル名とフルパスを得る
Sub ファイルを開くダイアログボックスを用いてファイルを開く09()
Dim OpenFileName As String
Dim FileName As String
OpenFileName = Application.GetOpenFilename(FileFilter:="Excelファイル,*.xlsx")
If OpenFileName <> "False" Then
Workbooks.Open OpenFileName
Else
MsgBox "キャンセルされました"
End If
FileName = Dir(OpenFileName)
MsgBox OpenFileName
MsgBox FileName
End Subのように記述すると、[ファイルを開く]ダイアログボックスでユーザーが指定したファイルのファイル名とフルパスを取得することができます。
よくあるミス
ファイルフィルタ文字列とワイルドカードのセットで「"(ダブルコーテーション)」で囲むこと!


【正】FileFilter:= “ファイルフィルタ文字列 , ワイルドカード”
【誤】FileFilter:= “ファイルフィルタ文字列” , “ワイルドカード”
【誤】FileFilter:= “ファイルフィルタ文字列” , “ワイルドカード”
のように
引数「FileFilter」にはファイルフィルタ文字列とワイルドカードを記述します。この時、引数全体を「"(ダブルコーテーション)」で囲まないといけません。
例えば、
FileFilter:= “Excelファイル , *.xlsx”
のように記述します。
FileFilter:= “Excelファイル“ , “*.xlsx”
のようにファイルフィルタ文字列とワイルドカードを個別に「"(ダブルコーテーション)」で囲むとエラーとなります。
引数「FileFilter」のワイルドカードは拡張子しか指定できない


FileFilter :=“Excelファイル , *.xlsx”
のようにワイルドカードには拡張子しか指定できません。
FileFilter :=“Excelファイル , テスト*.xlsx”
のように「テスト」で始まる拡張子「.xlsx」などは指定することがきないのです。







