Папка диалога выбора предыдущей папки - PullRequest
0 голосов
/ 13 июня 2018

Я пытаюсь использовать диалоговое окно файла, чтобы выбрать папку, которая будет использоваться позже в коде.Следующее используется как часть пользовательской формы, которая вызывает несколько других макросов и принимает различные другие пользовательские данные в виде строк.

То, что должен делать этот макрос (далее в коде), - экспортировать файл впапка, которую пользователь указывает в этом диалоге fldrpicker.Проблема заключается в следующем: файл экспортируется в папку до , которую я хочу, и я не могу понять, почему.

`Public FilePath as String
Private Sub folderpicker_click() 'A field in the UserForm
Application.EnableCancelKey = xlDisabled
    Dim fldr As FileDialog, sItem As String
    Set fldr = Application.FileDialog(msoFileDialogFolderPicker)
    With fldr
        .Title = "Select a Folder"
        .AllowMultiSelect = False
        .InitialFileName = "\\user\Desktop\Folder1\Folder2\Folder3\"
        If .Show <> -1 Then GoTo NextCode
        sItem = .SelectedItems(1)
    End With
FilePath = fldr.InitialFileName
NextCode:
    GetFolder = sItem
    Set fldr = Nothing
DestinationFolder.Value = sItem
End Sub
`

С этим кодом файл будет сохранен в Folder2, а не Folder3, как мне нужно.Я пытался устранить неполадки с временным сабвуфером, который использует msgbox(FilePath) сразу после этого запуска, но он говорит мне, что FilePath - это \\user\Desktop\Folder1\Folder2\, поэтому я не думаю, что ошибка экспортирует его (вот почему у меня нетвключил этот бит кода).

1 Ответ

0 голосов
/ 13 июня 2018

Я считаю, что происходит, потому что вы используете FilePath = fldr.InitialFileName, который по сути является исходной папкой, выбранной в диалоге. Если вы измените свой код на этот, он должен работать как положено:

Sub foo()
Application.EnableCancelKey = xlDisabled
    Dim fldr As FileDialog, sItem As String
    Set fldr = Application.FileDialog(msoFileDialogFolderPicker)
    With fldr
        .Title = "Select a Folder"
        .AllowMultiSelect = False
        .InitialFileName = "\\user\Desktop\Folder1\Folder2\Folder3\"
        If .Show <> -1 Then GoTo NextCode
        sItem = .SelectedItems(1)
    End With
FilePath = sItem
NextCode:
    GetFolder = sItem
    Set fldr = Nothing
DestinationFolder.Value = sItem
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...