- 这第二种方法首先要增加一个对象库,First you need to set a reference to the "Microsoft Shell Controls And Automation" object library. In the VBA Editor, go to the Tools menu, choose References, and scroll down to this item and put a check next to it.
- 然后在标准模块中添加代码如下:
Private Const BIF_RETURNONLYFSDIRS As Long = &H1
Private Const BIF_DONTGOBELOWDOMAIN As Long = &H2
Private Const BIF_STATUSTEXT As Long = &H4
Private Const BIF_RETURNFSANCESTORS As Long = &H8
Private Const BIF_EDITBOX As Long = &H10 'IE4+ needed
Private Const BIF_USENEWUI As Long = &H40 'Win2000, WinME only
Private Const BIF_VALIDATE As Long = &H20 '
Private Const BIF_NONEWFOLDERBUTTON As Long = &H200
Private Const BIF_BROWSEFORCOMPUTER As Long = &H1000
Private Const BIF_BROWSEFORPRINTER As Long = &H2000
Private Const BIF_BROWSEINCLUDEFILES As Long = &H4000
Private Const MAX_PATH As Long = 260
Function BrowseFolder(Optional Caption As String, _
Optional InitialFolder As String) As String
Dim SH As Shell32.Shell
Dim F As Shell32.Folder
Set SH = New Shell32.Shell
Set F = SH.BrowseForFolder(0&, Caption, BIF_RETURNONLYFSDIRS, _
InitialFolder)
If Not F Is Nothing Then
BrowseFolder = F.Items.Item.Path
End If
End Function
- 然后在某个Sub或者Func里调用
Dim FName As String
FName = BrowseFolder("Select a folder", "C:\InitialFolder")
If FName = "" Then
MsgBox "You didn’t select a folder"
Else
MsgBox "You selected: " & FName
End If
问题:
1、 Function BrowseFolder返回的是文件夹的path,String类型,因此无法得到文件夹的时间属性,可以改进。
2、 该对话框无法从起始文件夹上溯,不知有什么参数?