我正在处理的应用程序要求用户使用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
由于
答案 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”。如此依赖简单的反斜杠并不是最好的设计,但我怀疑微软会改变这一点。