Excel VBA FileDialog
VBAではfieldialogはさまざまなインスタンスを表すために使用されるプロパティであり、filedialogには、指定されたパスからファイルを選択するために使用されるmsofiledialogfilepickerとして知られる4つの異なるタイプの定数があります。フォルダと3番目はファイルを開くために開くmsofiledialogで、最後はファイルを新しいファイルとして保存するために使用されるmsofiledialogsaveasです。
他のファイルや他のワークシートのデータが必要な特定の状況があり、VBAを使用して作業を自動化するため、VBAを使用して他のさまざまなファイルを開くことができます。これは、Filedialogを使用して実行されます。方法は、コードへのパスを提供する必要はなく、代わりにユーザーにファイルを参照するように依頼することです。
VBAプロジェクトの一環として、他のワークブックを開いて、それらを使用して何らかのタスクを実行する必要がある場合があります。以前の記事「VBAWorkbook.Open」の1つで、指定されたパスと特定のファイルでファイルを開く方法を示しました。そこで、フォルダパスとファイル名に拡張子を付ける必要がありました。しかし、ユーザーがさまざまなフォルダーからさまざまなファイルを選択する必要がある場合はどうでしょうか。ここで「FileDialog」オプションが登場します。
VBA FileDialogオプションはどのように機能しますか?
「正確なパスがわからない場合は、FileDialogがファイルを見つけて選択します」。パスアドレスとファイル名を指定する代わりに、ファイルを開くダイアログウィンドウを個別に表示して、コンピューターの任意のフォルダーからファイルを選択できます。
このVBAFileDialog Excelテンプレートはここからダウンロードできます– VBA FileDialogExcelテンプレート「FileDialog」はVBAのオブジェクトです。このオプションを最初に使用するには、変数をFileDialogとして定義する必要があります。
変数が「FileDialog」として宣言されると、それはオブジェクト変数になります。これを使い始めるには、Application.FileDialogを使用してオブジェクトを設定する必要があります。
上の画像でわかるように、FileDialogには4つのオプションがあります。
- msoFileDialogFilePicker:このオプションは、ユーザーの前にあるファイルピッカーウィンドウを開いて、ユーザーの希望に応じて目的のファイルを選択します。
- msoFileDialogFolderPicker:このオプションは、ユーザーの前にあるダイアログボックスまたはウィンドウを開いてフォルダーを選択します。
- msoFileDialogOpen:これにより、ユーザーは選択したファイルをフォルダーから開くことができます。
- msoFileDialogSaveAs:これにより、ユーザーはファイルを別のコピーとして保存できます。
今のところ、msoFileDialogFilePickerのオプションを選択しました。
次に、目の前に表示されるダイアログボックスを設計する必要があります。
With Statementを使用して、ダイアログボックスを設計できます。
withステートメントの中にドットを入れて、FileDialogオプションのプロパティとメソッドのIntelliSenseリストを表示します。
ファイルダイアログボックスが開いたときにExcelファイルのみを表示するには、最初に適用されたフィルターをすべて削除する必要があります。
次に、Excelファイルのワイルドカード拡張子を使用して「Excelファイル」として新しいフィルターを適用する必要があります。
次に、ファイルダイアログボックスのタイトルを変更しましょう。
ユーザーが一度に1つのファイルのみを選択できるようにすることも、複数のファイルを選択できるようにすることもできます。このためには、「複数選択を許可」を使用する必要があります。
ここには2つのオプションがあります。TRUEを選択すると、ユーザーは複数のファイルを選択できます。FALSEを選択すると、ユーザーは一度に1つのファイルしか選択できません。
FileDialogを使用して設計できるもう1つのことは、ファイルダイアログボックスが表示されたときにデフォルトのフォルダーを指定できることです。このためには、初期ファイル名を使用します。
このために、開くアドレスパスのデフォルトフォルダについて言及する必要があります。
最後に、「Show」メソッドを適用してファイルダイアログボックスを表示する必要があります。
コード:
Sub DoEvents_Example1() Dim Myfile As FileDialog Set Myfile = Application.FileDialog(msoFileDialogFilePicker) With Myfile .Filters.Clear .Filters.Add "Excel Files", "*.xlsx?", 1 .Title = "Choose Your Excel File!!!" .AllowMultiSelect = False .InitialFileName = "D:\Excel Files" .Show End With End Sub
Now run the VBA code to see the result.
As we can see in the above image file dialog box has opened the mentioned folder by default.
Now we can select any subfolder and select the excel files.
Look at the above image because we have applied the filter parameter as “Excel Files” only.
This will just select the file from the mentioned folder. To store the full path we need to declare one more variable as a string.
Now inside the with statement select “SelectedItems”. Assign the selected items folder path to the newly defined variable.
Now finally show the selected folder path in the VBA message box.
Now I will run the program to see the dialogue box.
Now I have selected the File Name as “1. Charts.xlsx” in the subfolder “Charts”. If I click on OK, we can see the full folder path in the message box.
So, like this, we can use the FileDialog option to select the files from the folder in Excel. Use below code to select the files.
Code:
Sub DoEvents_Example1() Dim Myfile As FileDialog Set Myfile = Application.FileDialog(msoFileDialogFilePicker) Dim FileAddress As String With Myfile .Filters.Clear .Filters.Add "Excel Files", "*.xlsx?", 1 .Title = "Choose Your Excel File!!!" .AllowMultiSelect = False .InitialFileName = "D:\Excel Files" .Show FileAddress = .SelectedItems(1) End With MsgBox FileAddress End Sub