Excel VBA [ファイルを開く]ダイアログボックスを表示する

Application.GetOpenFilename メソッドの構文

Excel VBAで、ファイルを開くダイアログを表示するプログラムです。

ApplicationオブジェクトのGetOpenFilenameメソッドを使用します。

ユーザーからファイル名を取得するために、[ファイルを開く] ダイアログ ボックスを表示します。

Application.GetOpenFilename (FileFilter, FilterIndex, Title, ButtonText, MultiSelect)

FileFilter ファイル フィルター文字列を指定します。
FilterIndex FileFilter で指定したファイル フィルター文字列の中で、1 から何番目の値を既定値とするかを指定します。
この引数を省略するか、ファイル フィルター文字列の数より大きい数値を指定すると、最初のファイル フィルター文字列が既定値となります。
Title ダイアログ ボックスのタイトルを指定します。 この引数を省略すると “ファイルを開く” になります。
ButtonText Macintosh でのみ指定できます。
MultiSelect True を指定すると、複数のファイルを選択できます。 False を指定すると、1 つのファイルしか選択できません。 既定値は False です。

戻り値はバリアント型です。
選択したファイルのフルパスが文字列で戻ります。
ファイルを選択しなかった場合は、Falseが戻ります。

使用例1

[ファイルを開く] ダイアログ ボックスを表示し、メッセージボックスに選択したファイルを表示します。

ダイアログには、カレントフォルダが初期表示されます。

Sub FileOpenDialog()
Dim fileName As Variant

 

fileName = Application.GetOpenFilename(“すべてのファイル,*.*”, , “サンプル”)

If fileName = False Then
MsgBox “キャンセルしました”
Else
MsgBox fileName & ” が選択されました”
End If
End Sub

実行すると、ダイアログボックスが表示されます。

ファイルを開く

 

ファイルを選択し、「開く」ボタンをクリックすると、メッセージボックスにファイルのフルパスが表示されます。

 

メッセージ

 

使用例2

ダイアログの初期表示フォルダを指定したい場合は、ChDirを実行します。

Sub FileOpenDialog()
Dim fileName As Variant

 

ChDir “C:\Temp”
fileName = Application.GetOpenFilename(“すべてのファイル,*.*”, , “サンプル”)

If fileName = False Then
MsgBox “キャンセルしました”
Else
MsgBox fileName & ” が選択されました”
End If
End Sub

実行すると、ダイアログボックスが表示されます。初期表示フォルダは、「C:\Temp」になっています。

ファイルを開く

 

使用例3

FileFilterに複数のファイル フィルター文字列を指定します。

Sub FileOpenDialog()
Dim fileName As Variant

 

ChDir “C:\Temp”
fileName = Application.GetOpenFilename(“Excelブック, *.xls; *.xlsx; *.xlsm, テキストファイル, *.txt”, , “サンプル”))

If fileName = False Then
MsgBox “キャンセルしました”
Else
MsgBox fileName & ” が選択されました”
End If
End Sub

実行すると、Excelファイルとテキストファイルが選択できるようになっています。

 

まとめ

Application.GetOpenFilenameメソッドは、ユーザーが選択したファイルのフルパスを返します。

取得したパスをもとに、サンプルではメッセージボックスを表示しましたが、ファイルを開いたり、ファイル操作をしたりと、いろいろな使い方ができます。

以上、ファイルを開くダイアログを表示するプログラムでした。