vba ファイルダイアログボックスを開く
VBAでは、開くファイルを選択するために Application.GetOpenFilenameメソッドを使用します。このチュートリアルでは、ファイルダイアログを開く方法とパラメータを設定する方法を学びます。
ファイルを開いたり閉じたりする方法を学びたい場合は、こちらのリンクをクリックしてください:VBA ファイルを開く/閉じる
VBAでファイルダイアログを開く
VBAでファイルを開く場合、まずファイルを選択するためのファイルダイアログを開く必要があります。以下はそのコードです。
Dim strFile As String
strFile = Application.GetOpenFilename( FileFilter:="Excel files (*.xlsx), *.xlsx", Title:="Excelファイルを選択してください", MultiSelect:=True)
ご覧の通り、このメソッドにはいくつかのパラメータがあります。FileFilterは、必要なファイルタイプ(この場合は.xlsxファイル)をフィルタリングすることができます。 Titleパラメータで、ダイアログボックスのタイトルを設定します。複数のファイルを開くことを許可したい場合は、MultipleSelectをTrueに設定します。このパラメータを設定しない場合、選択できるファイルは1つだけです。
画像1.ファイルを開くダイアログ
画像1にあるように、「Excelファイルを選択してください」というタイトルでダイアログボックスが表示されます。Excelファイルだけがフィルタリングされ、複数のファイルを選択することができます。
フォルダを指定してファイルダイアログボックスを開く
特定のフォルダーを指定してダイアログボックスを開きたい場合は、メソッド.FileDialogにパラメータmsoFileDialogFilePicker を使用する必要があります。この例では、ダイアログボックスをC:\VBA Folder というフォルダーに開くようにします。以下はそのコードです。
Dim fd As Office.FileDialog
Dim strFile As String
Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd
.Filters.Clear
.Filters.Add "Excelファイル", "*.xlsx", 1
.Title = "Excelファイルを選択してください"
.AllowMultiSelect = False
.InitialFileName = "C:\VBA Folder"
If .Show = True Then
strFile = .SelectedItems(1)
End If
End With
まず、Office.FileDialog型の変数fdと、ファイル取り込み用の文字列変数を宣言します。
Dim fd As Office.FileDialog
Dim strFile As String
この後、fdを Application.FileDialog(msoFileDialogFilePicker)に設定する必要があります。
Set fd = Application.FileDialog(msoFileDialogFilePicker)
これで、With fd End With の中で、複数のパラメータを設定できるようになりました。
.Filters.Clear
.Filters.Add "Excelファイル", "*.xlsx", 1
.Title = "Excelファイルを選択してください"
.AllowMultiSelect = False
ここでは、ファイルフィルタをクリアして(.Filters.Clear)、.xlsxに設定しています(.Filters.Add “Excelファイル”, “*.xlsx”, 1)
また、ダイアログボックスのタイトルを設定します。(.Title = “Excelファイルを選択してください”)
ユーザーが1つのファイルしか選択できないように制限することもできます。
.AllowMultiSelect = False
ダイアログボックスを特定のフォルダで開くには、次のようなコードを記述します。
.InitialFileName = "C:\VBA Folder"
最後に、以前に設定したすべてのパラメータでダイアログボックスを開きます。
If .Show = True Then
strFile = .SelectedItems(1)
End If
このコードを実行すると、ファイルを開くためのダイアログボックスがC:\VBA Folder に表示されます。
画像2.特定のフォルダにあるファイルを開くダイアログ