''============================================================ 
'' Диалог выбора файла 
''strPath - стартовая папка 
''strTypeFile - тип файлов 
''blnMultiSelect - выбор нескольких файлов 
'Sub TestFnGeListFile() 
'    strLastPath = "<path_to_folder_or_file>" 
'    'strFileName = w_Get.FnGeListFile(strLastPath, "Excel files", False) 
'    Set strFileName = w_Get.FnGeListFile(strLastPath, "Excel files", True) 
'End Sub 
''------------------------------------------------------------ 
Function FnGeListFile(Optional ByVal strPath As String = "<path_to_folder_or_file>", _ 
                    Optional ByVal strTypeFile As String = "Excel files", _ 
                    Optional ByVal blnMultiSelect As Boolean = False) As Variant 
                    
Dim strFilters As String 
    'определяем тип файлов(часто используемые) 
    Select Case strTypeFile 
        Case "Excel files": strFilters = "*.xls*;*.xlsx*" 
        Case "Access files": strFilters = "*.mdb*;*.accdb*" 
        Case "Text files": strFilters = "*.txt*" 
    End Select 
  
Dim result As Integer 
  
    With Application.FileDialog(1) ' Вместо : With Application.FileDialog(msoFileDialogOpen) ' 
        .Title = "Выбрать файл" 
        .InitialFileName = strPath 'CurrentProject.Path & "\" '"C:\" 'default path' 
        .AllowMultiSelect = blnMultiSelect 
        .Filters.Clear 
        .Filters.Add strTypeFile, strFilters, 1 '.Filters.Add "Access files", "*.mdb*;*.accdb*", 1 
        result = .Show 
    
        If result = 0 Then 
            Exit Function 
            FnGeListFile = "" 
        End If 
        
        If blnMultiSelect Then 
            'словарь имен файлов 
            Set dicGetFile = CreateObject("Scripting.Dictionary"): dicGetFile.comparemode = 0 
            For lf = 1 To .SelectedItems.Count 
                mainKey = .SelectedItems(lf) 'считываем полный путь к файлу 
                If Not dicGetFile.exists(mainKey) Then 
                    dicGetFile.Add mainKey, dicGetFile.Count 'mainKey ' 
                End If 
            Next lf 
            Set FnGeListFile = dicGetFile 
        Else ' читаем имя одного файла 
            FnGeListFile = .SelectedItems(1) 
        End If 
    End With 
End Function 
'============================================================