Generic file selection window function in VBA
Here is a very useful file selection function for VBA, inputs sFilter a filter string i.e. “*.txt” and outputs an array of selected files including their path. The code is a modification of the example found on Microsoft’s MSDN FileDialog Object page.
'file list is a generic file choser, outputing the file names as an array Private Function fileList(sFilter As String) As Variant 'Declare a variable as a FileDialog object. Dim fd As FileDialog 'Create a FileDialog object as a File Picker dialog box. Set fd = Application.FileDialog(msoFileDialogFilePicker) Dim i As Integer 'Use a With...End With block to reference the FileDialog object. With fd .InitialFileName = ActivePresentation.Path .Filters.Clear 'Add a filter that includes all files. .Filters.Add "All files", sFilter If .Show = -1 Then Dim fileData ReDim fileData(.SelectedItems.Count - 1) 'Step through each string in the FileDialogSelectedItems collection. For i = 1 To .SelectedItems.Count fileData(i - 1) = .SelectedItems(i) Next i 'The user pressed Cancel. Else Exit Function End If End With 'Set the object variable to Nothing. Set fd = Nothing fileList = fileData End Function