Vba 获取msoFileDialogFolderPicker的初始路径

Vba 获取msoFileDialogFolderPicker的初始路径,vba,excel,Vba,Excel,我正在使用的应用程序要求用户使用msoFileDialogFolderPicker选择一个文件夹,它在最后一个位置打开文件夹选择器非常有用。但是,我们的用户偶尔会更改路径中的文件夹名称。这会导致出现windows“位置不可用”对话框。这让我们的用户感到害怕,因为他们不知道发生了什么 我的问题是,如何确定文件夹的初始位置?然后我可以为它设置陷阱,只需将其设置为默认位置即可 我的代码非常简单 GetFolder As String Set folder = Application.FileDialo

我正在使用的应用程序要求用户使用msoFileDialogFolderPicker选择一个文件夹,它在最后一个位置打开文件夹选择器非常有用。但是,我们的用户偶尔会更改路径中的文件夹名称。这会导致出现windows“位置不可用”对话框。这让我们的用户感到害怕,因为他们不知道发生了什么

我的问题是,如何确定文件夹的初始位置?然后我可以为它设置陷阱,只需将其设置为默认位置即可

我的代码非常简单

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
getfolderas字符串
Set folder=Application.FileDialog(msoFileDialogFolderPicker)
带文件夹
.Title=“请选择一个文件夹”
.InitialFileName=“C:\”
.AllowMultiSelect=False
如果.Show-1,则转到EndSub
GetFolder=.SelectedItems(1)
以
谢谢

考虑一下:

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

我更愿意对上一个答案中的评论做出回应,但我没有这样做的“声誉”,所以请原谅我用一个答案回应另一个答案

我在.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”。如此依赖简单的反斜杠并不是最好的设计,但我怀疑微软会改变这一点。

就是这样,谢谢!我还必须取出
.InitialFileName=“C:\”
。它仍然默认为最后一个文件夹,但该变量仍然为C:\。奇怪,但是fixed@Smittey我感兴趣的是对象有默认属性。我认为这是正确的,但我错了。这不会在
.show
上生成文件夹选择器的路径。它可能对我来说是唯一的,但它显示的路径级别较低。在某些环境中,在.show之前和之后,您将获得不同的值。这很烦人。我可能最终不得不将文件夹的路径保存在隐藏的工作表或其他东西中,并在
If Dir(,)
then上使用该路径作为参考。看起来不太优雅。但是哦,好吧