具体到VBA目录:允许用户指定通过Windows浏览选择
是否有可能让用户通过标准的Windows“浏览”选择指定一个目录名和读取,在作为一个变量(而不是在软件中对其进行硬编码)。
如:
String MyStr = <Inputted full path by the user via the Windows Browse Selection>
具体到VBA目录:允许用户指定通过Windows浏览选择
是否有可能让用户通过标准的Windows“浏览”选择指定一个目录名和读取,在作为一个变量(而不是在软件中对其进行硬编码)。
如:
String MyStr = <Inputted full path by the user via the Windows Browse Selection>
这样的代码:
Sub MAIN()
Dim folder As String
folder = GetFolder
End Sub
Function GetFolder() As String
Dim fldr As FileDialog
Dim sItem As String
Set fldr = Application.FileDialog(msoFileDialogFolderPicker)
With fldr
.Title = "Select a Folder"
.AllowMultiSelect = False
.InitialFileName = Application.DefaultFilePath
If .Show <> -1 Then GoTo NextCode
sItem = .SelectedItems(1)
End With
NextCode:
GetFolder = sItem
Set fldr = Nothing
End Function
这也非常有帮助,它的工作;谢谢! – nas
这是一个功能,你可以用它来允许用户浏览文件夹:
Public Function pickFolder() As String
Dim strSelectedItem As String
Dim dlgPickFolder As FileDialog
Set dlgPickFolder = Application.FileDialog(msoFileDialogFolderPicker)
With dlgPickFolder
.AllowMultiSelect = False
End With
If dlgPickFolder.Show = -1 Then
strSelectedItem = dlgPickFolder.SelectedItems(1) & "\"
Else
strSelectedItem = ""
Set fd = Nothing
End If
Set fd = Nothing
pickFolder = strSelectedItem
End Function
你可以使用它只是使用此功能设置所需变量的值:
Dim sFolder As String
sFolder = pickFolder()
请让我们知道,如果是我用下面的标志选项BIF_RETURNONLYFSDIRS有帮助的感谢
这是非常有用的,它的工作;谢谢! – nas
Set bffShell = CreateObject("Shell.Application")
Set bff = bffShell.BrowseForFolder(0, "Select the My Documents folder", &h4049)
If Err.number<>0 Then
MsgBox "Error Setting up Browse for Folder"
Else
A = bff.ParentFolder.ParseName(bff.Title).Path
If err.number=424 then err.clear
Msgbox A
End If
(00000001 ),BIF_RETURNFSANCESTORS(0x00000008),BIF_NEWDIALOGSTYLE(0x00000040)和BIF_BROWSEINCLUDEFILES(0x00004000)。
这些都是从MSDN https://msdn.microsoft.com/en-us/library/windows/desktop/bb773205(v=vs.85).aspx
ulFlags类型标志选项:UINT
指定该对话框中的选项标志。此成员可以是 0或以下值的组合。版本号参考 SHBrowseForFolder所需的最低版本的Shell32.dll到 识别在以后的版本中添加的标志。有关更多信息,请参阅Shell和公共控件 版本。
BIF_RETURNONLYFSDIRS(00000001)
00000001。只返回文件系统目录。如果用户选择 不属于文件系统的文件夹,则OK按钮呈灰色。
注意“\ server”项目以及 “\ server \ share”和目录项目保持启用“确定”按钮。但是,如果用户选择 “\ server”项目,SHBrowseForFolder返回的PIDL传递到 SHGetPathFromIDList失败。
BIF_DONTGOBELOWDOMAIN(0x00000002)
0x00000002。请勿在域对话框的树视图控件 中包含域级别以下的网络文件夹。
BIF_STATUSTEXT(0x00000004)
0x00000004。在对话框中包含状态区域。回调 函数可以通过发送消息到对话框 框来设置状态文本。当指定BIF_NEWDIALOGSTYLE时,不支持此标志。
BIF_RETURNFSANCESTORS(0x00000008)
0x00000008。只返回文件系统祖先。祖先是位于名称空间层次结构中根文件夹下的 子文件夹。 如果用户选择不属于 文件系统的根文件夹的祖先,则OK按钮呈灰色。
BIF_EDITBOX(0x00000010)
0x00000010。版本4.71。在浏览对话框 中包含一个编辑控件,允许用户键入项目的名称。
BIF_VALIDATE(0x00000020)
0x00000020。版本4.71。如果用户在 编辑框中输入了无效名称,则浏览对话框将使用BFFM_VALIDATEFAILED消息调用应用程序的 BrowseCallbackProc。如果未指定BIF_EDITBOX,则忽略此标志 。
BIF_NEWDIALOGSTYLE(0x00000040)
0x00000040。版本5.0。使用新的用户界面。设置此标志 为用户提供了可调整大小的较大对话框。 对话框有几个新功能,包括:在对话框中拖放 功能,重新排序,快捷菜单,新的 文件夹,删除和其他快捷菜单命令。
注意如果COM是通过CoInitializeEx的与 COINIT_MULTITHREADED标志设置初始化,如果的SHBrowseForFolder BIF_NEWDIALOGSTYLE传递失败。
BIF_BROWSEINCLUDEURLS(0x00000080)
0x00000080。版本5.0。浏览对话框可以显示URL。还必须设置 BIF_USENEWUI和BIF_BROWSEINCLUDEFILES标志。如果这三个标志中的任何一个 未设置,浏览器对话框会拒绝URL。 即使设置了这些标志,仅当包含所选项目的文件夹支持URL时,浏览对话框才会显示URL 。当 文件夹的IShellFolder :: GetAttributesOf方法被调用以请求 所选项目的属性时,该文件夹必须设置SFGAO_FOLDER 属性标志。否则,浏览对话框将不会显示 URL。
BIF_USENEWUI
版本5.0。使用新的用户界面,包括一个编辑框。此 标志等同于BIF_EDITBOX | BIF_NEWDIALOGSTYLE。
注意如果COM是通过CoInitializeEx的与 COINIT_MULTITHREADED标志设置初始化,如果BIF_USENEWUI 传递的SHBrowseForFolder失败。
BIF_UAHINT(0x00000100)
0x00000100。版本6.0。与BIF_NEWDIALOGSTYLE结合使用时,会在对话框中添加一个 用法提示,以代替编辑框。 BIF_EDITBOX 覆盖此标志。
BIF_NONEWFOLDERBUTTON(0x00000200)
0x00000200。版本6.0。不要在 浏览对话框中包含新建文件夹按钮。
BIF_NOTRANSLATETARGETS(0x00000400时)
0x00000400时。版本6.0。当所选项目是快捷方式时,返回 快捷方式本身的PIDL而不是其目标。
BIF_BROWSEFORCOMPUTER(0x00001000)
0x00001000。只返回电脑。如果用户选择任何其他 比计算机,确定按钮呈灰色。
BIF_BROWSEFORPRINTER(0x00002000)
0x00002000。只允许选择打印机。如果用户选择 以外的其他任何打印机,则OK按钮呈灰色。
在Windows XP和更高版本的系统中,最佳做法是使用Windows样式对话框,将对话框的根设置为打印机和传真文件夹(CSIDL_PRINTERS)。
BIF_BROWSEINCLUDEFILES(0x00004000)
0x00004000。版本4.71。浏览对话框还将文件 显示为文件夹。
BIF_SHAREABLE(0x00008000)
0x00008000。版本5.0。浏览对话框可以在远程系统上显示可共享的 资源。这适用于 想要在本地系统上公开远程共享的应用程序。 BIF_NEWDIALOGSTYLE 标志也必须设置。
BIF_BROWSEFILEJUNCTIONS(0x00010000在)
0x00010000在。 Windows 7和更高版本。允许浏览文件夹连接,例如 库或带有.zip文件扩展名的压缩文件为 。
..........有趣的做法.............. –
是的,根据[文档](https://msdn.microsoft.com/en-us/library/office/ff836226.aspx)使用'Application.FileDialog' – OldUgly
谢谢。这让我走向了正确的方向! – nas
http://stackoverflow.com/a/30745070/4539709 – 0m3r