Application.FileDialog

Added in Office 2002.
This provides a single object that allows you to display four different types of dialog box.
This includes dialog boxes for opening Files, saving Files, selecting Files and selecting Folders.
This is a much more powerful version of the previous GetOpenFileName and GetSaveAsFileName
One advantage of this FileDialog object is that you can display a list of just directories, rather than both directories and files.
This also has the advantage of being available in all the Office applications.

Set objFileDialog = Application.FileDialog(msoFileDialogType.msoFileDialogOpen) 

Types of Dialog Box

There is very little difference between the four types except the caption displayed at the top of the dialog box.
The FilePicker and FolderPicker display the word "Browse" in the caption while the other two display "File Open" and "File Save As".
They all display directories and files except the FolderPicker.

Set objFileDialog = Application.FileDialog(msoFileDialogType.msoFileDialogOpen) 

The Office prefix is not required but it makes it clear that it is an object in the Office library.

Public Sub File_Dialog_Test 
Dim objFileDialog As Office.FileDialog
Dim objFileDialogFilters As Office.FileDialogFilters
Dim sFileName As String

   Set objFileDialog = Application.FileDialog(msoFileDialogType.msoFileDialogOpen)
   With objFileDialog

'define a Filters object
      Set objFileDialogFilters = .Filters
      With objFileDialogFilters

'clear the default filters
         .Clear
         
'add a filter, all filters must start with an asterisk
         .Add "Client Files", "*.xls"
         .Add "Images", "*.png,*.jpg", 1
         .Add "All Files", "*.*"
      End With

'allow only one file to be selected
      .AllowMultiSelect = False

'show the dialog and exit if Cancel is pressed
      If .Show = False Then
         Exit Sub
      End If

'display the file name that was selected
      Call Msgbox("File selected : " & .SelectedItems(1))
   End With
End Sub

Displaying the Dialog Box

The Show method will display the dialog box.
This method will not actually open the files but just adds the selection to the SelectedItems collection.
If the user clicks Open then "True" is returned.
If the user clicks Cancel then "False" is returned.
You can use the Execute method to actually open or save the files.

If .Show = True Then 
   .Execute
End If

Select Multiple Files

Dim f As Object 'FileDialog  
Set f = Application.FileDialog(3) 'msoFileDialogFilePicker
With f
' .AllowMultiSelect = True 'default
   .InitialFileName = "C:\Temp\"
' Specify filters
' .Filters.Clear
' .Filters.Add "All Files", "*.*"
   .Show
   Dim varFile As Variant
   For Each varFile In .SelectedItems
      MsgBox Trim(varFile)
   Next
End With


© 2024 Better Solutions Limited. All Rights Reserved. © 2024 Better Solutions Limited TopPrevNext