このページではVBAの「GetOpenFilenameメソッド」でダイアログボックスを表示し、ファイル名を取得する方法を解説しています。
VBAでデータ処理を行うにはユーザーからファイルを指定してもらう必要があります、その際に「GetOpenFilenameメソッド」でダイアログボックスを表示して選択する方法にしておくと便利です。
見た目も良く、ユーザーにも喜ばれます。
気に入ったら一度試してください。
ダイアログ表示について
ダイアログボックスとは、何かの入力やメッセージを表示用に、一時的に開かれる小さな画面のことです。
以下のような画面です。
コーディングサンプル
Dim wTxt As String
wTxt = Application.GetOpenFilename("CSVファイル(*.csv),*.csv")
構文 Application.GetOpenFilename(FileFilter, FilterIndex, Title, ButtonText, MultiSelect)
FileFilter | ファイルの候補を指定する文字列 (ファイル フィルター文字列) を指定します。 |
FilterIndex | FileFilter で指定したファイル フィルター文字列の中で、1 から何番目の値を既定値とするかを指定します。 この引数を省略するか、ファイル フィルター文字列の数より大きい数値を指定すると、最初のファイル フィルター文字列が既定値となります。 |
Title | ダイアログ ボックスのタイトルを指定します。 この引数を省略すると “ファイルを開く” になります。 |
ButtonText | Macintosh でのみ指定できます。 |
MultiSelect | True を指定すると、複数のファイルを選択できます。 False を指定すると、1 つのファイルしか選択できません。 既定値は False です。 |
フィルターの指定方法
表示したいファイルの種類を指定するには「FileFilter」オプションを指定します。
キャンセルの処理
ダイアログを開いて「開く」が選択されたときはファイル名、キャンセルの場合は”False”の文字列が返されます。
Sub sample()
Dim wTxt As String
wTxt = Application.GetOpenFilename("CSVファイル(*.csv),*.csv")
If wTxt = "False" Then
MsgBox "キャンセル"
Else
MsgBox wTxt
End If
End Sub
変数をVariant属性にして、以下のように判断することも可能です。
Sub sample()
Dim wTxt As Variant
wTxt = Application.GetOpenFilename("CSVファイル(*.csv),*.csv")
If VarType(wTxt) = vbBoolean Then
MsgBox "キャンセル"
Else
MsgBox wTxt
End If
End Sub
VBAは難しい?
ところで、VBAは難しいでしょうか?
VBAは一般的には簡単な言語だと言えますが、プログラミングの経験がない人には難しいかもしれないですね。
書籍などの独学でなかなか覚えられないのであれば、スクールで基礎から学ぶのも手段です。