Функция GetFolder не работает, когда пользователь не отходит от настроек по умолчанию - PullRequest
0 голосов
/ 04 октября 2019

Я использую этот фрагмент кода, чтобы позволить пользователю найти папку, где сохранить файл. Проблема возникает, когда пользователь не просматривает другие папки (поэтому он хочет сохранить в папке по умолчанию).

Поэтому, когда пользователь запускает этот код и сразу нажимает кнопку ОК, я получаю эту ошибку:

Тестовый обмен KIT

Путь не существует

error message example

Function GetFolder(Optional strPath As String) As String

    Dim fldr As Object   
    Dim sItem As String   
    Set fldr = Application.FileDialog(4)   

    With fldr   
       .Title = "Select a Folder"   
       .AllowMultiSelect = False   
       If strPath <> "" Then   
          .InitialFileName = strPath   
       End If   
       If .Show <> -1 Then GoTo NextCode   
           sItem = .SelectedItems(1)
    End With   

    NextCode:   
    GetFolder = sItem   
    Set fldr = Nothing   

End Function

Если пользователь просматривает родительскую папку изатем обратно в папку по умолчанию, она работает как положено.

В чем может быть причина здесь?

Ответы [ 2 ]

1 голос
/ 04 октября 2019

If strPath = "D:\Folder" показывает правильную папку, но завершается неудачно, когда вы нажимаете OK.

If strPath = "D:\Folder\" работает нормально.

Хотя вывод снова D: \ Folder, что довольно странноесли вы спросите меня ...

0 голосов
/ 04 октября 2019

Поскольку объект FileDialog может использоваться как для выбора папки, так и для выбора файла, в зависимости от предоставленного аргумента DialogType, если вы пропустите ограничитель конечного пути из *Свойство 1007 *InitialFilename, предоставленное значение будет интерпретировано как имя файла с окном редактирования, заполненным именем файла.

...