VBA Open File Dialog Box

VBA allows you to choose a file to open using the Application.GetOpenFilename method. In this tutorial, you will learn how to open a file dialog and set parameters.

If you want to learn how to open and close a file, you can click on this link: VBA Open/Close File

Open a File Dialog in VBA

If you want to open a file in VBA, first you need to open a file dialog for choosing a file. Here is the code:

Dim strFile As String

strFile = Application.GetOpenFilename(FileFilter:="Excel files (*.xlsx*), *.xlsx*", Title:="Choose an Excel file to open", MultiSelect:=True)

As you can see, the method has several parameters. FileFilter allows you to filter file types which you need, in our case .xlsx files.

In the Title parameter, you can set a title of the dialog box. If you want to allow opening multiple files, you need to set MultipleSelect to True. If you don’t set this parameter, only one file can be selected.

vba-open-file-dialog

Image 1. Open a file dialog

 

As you can see in Image 1, the dialog box appears with the title Choose an Excel file. Only Excel files are filtered and we can select multiple files.

 

Open a File Dialog Box in a Specific Folder

If you want to open a dialog box in a specific folder, you have to use the method .FileDialog with the parameter msoFileDialogFilePicker. In the example, we will open a dialog box in the folder C:\VBA Folder. Here is the code:

Dim fd As Office.FileDialog
Dim strFile As String

Set fd = Application.FileDialog(msoFileDialogFilePicker)

With fd

    .Filters.Clear
    .Filters.Add "Excel Files", "*.xlsx?", 1
    .Title = "Choose an Excel file"
    .AllowMultiSelect = False

    .InitialFileName = "C:\VBA Folder"

    If .Show = True Then

        strFile = .SelectedItems(1)

    End If

End With

First you need to declare the variable fd type Office.FileDialog and the string variable for file taking:

Dim fd As Office.FileDialog
Dim strFile As String

After this, you need to set fd to Application.FileDialog(msoFileDialogFilePicker):

Set fd = Application.FileDialog(msoFileDialogFilePicker)

Now, within With fd End With, we can set multiple parameters:

.Filters.Clear

.Filters.Add "Excel Files", "*.xlsx?", 1

.Title = "Choose an Excel file"

.AllowMultiSelect = False

Here we clear the file filters (.Filters.Clear) and set it to .xlsx (.Filters.Add “Excel Files”, “*.xlsx?”, 1).

Also, we can set the title of the dialog box: .Title = “Choose an Excel file”.

We can limit a user to select only one file by:

.AllowMultiSelect = False

To open a dialog box in the folder we want, we need to put this line of the code:

.InitialFileName = "C:\VBA Folder"

At the end we will just open the dialog box with all the parameters previously set:

If .Show = True Then

    strFile = .SelectedItems(1)

End If

 

When we execute this code, the dialog box for file opening appears in the folder C:\VBA Folder:

vba open file dialog in specific folder

Image 2. Open a file dialog in a specific folder