获取msoFileDialogFolderPicker的初始路径

时间:2014-11-03 15:26:55

标签: vba excel-vba excel

我正在处理的应用程序要求用户使用msoFileDialogFolderPicker选择一个文件夹,它可以在最后一个位置打开文件夹选择器。但是,我们的用户偶尔会更改路径中的文件夹名称。这导致窗口位置不可用'对话框。这会吓到我们的用户,因为他们不知道发生了什么。

我的问题是,如何找出初始文件夹位置是什么?然后,我可以陷阱,只需将其设置为默认位置。

我的代码很简单就是

GetFolder As String
Set folder = Application.FileDialog(msoFileDialogFolderPicker)

With folder
    .Title = "Please Select a Folder"
    .InitialFileName = "C:\"
    .AllowMultiSelect = False

    If .Show <> -1  Then Goto EndSub
    GetFolder = .SelectedItems(1)
End With

由于

2 个答案:

答案 0 :(得分:1)

考虑:

Sub qwerty()
    Dim fldr As FileDialog
    Set fldr = Application.FileDialog(msoFileDialogFolderPicker)
    MsgBox fldr.InitialFileName
End Sub

答案 1 :(得分:0)

宁愿评论来回应上一个答案中的评论,但我没有“声誉”来做到这一点,所以请原谅我用一个答案来回应另一个。

我在 .InitialFileName 中发现了一个微妙之处。当我使用这个片段时,

With Application.FileDialog(msoFileDialogFolderPicker)
    .InitialFileName = "C:\Users\" & Environ$("Username") & "\Desktop"
    If .Show = -1 Then
        Get_Folder = .SelectedItems(1)
    Else
        Get_Folder = ""
    End If
End With

VBA 将“桌面”放在对话框窗口底部的“文件夹名称:”框中,并且只是默认为 Windows 中使用的上一个文件夹。但是当我在路径的末尾加上反斜杠时,就像我在这里所做的那样,

With Application.FileDialog(msoFileDialogFolderPicker)
    .InitialFileName = "C:\Users\" & Environ$("Username") & "\Desktop\"
    If .Show = -1 Then
        Get_Folder = .SelectedItems(1)
    Else
        Get_Folder = ""
    End If
End With

文件夹对话框不使用上次使用的文件夹,它实际上选择了文件夹“C:\Users<用户名>\Desktop”。如此依赖简单的反斜杠并不是最好的设计,但我怀疑微软会改变这一点。