您的位置:首页 > 编程语言 > VB

在Office VBA里用对话框选择文件夹

2005-03-24 11:27 621 查看
    在网上找了一下,大致有两种方法,第一种方法是使用Windows API 调用显示对话框。第二种方法用“Microsoft shell 控件和自动化 ”对象库。第一种方法可以在Windows的任意版本使用(win95或更晚),而第二种方法需要用户安装了Internet Explorer 5或更高版本。 不过第一种方法中,API不允许你指定开始文件夹,因此还是用了第二种方法,因为指定起始文件夹还是很有用的,而且基本现在一般PC的软件配置还是达到这个要求了的。

这第二种方法首先要增加一个对象库,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、 该对话框无法从起始文件夹上溯,不知有什么参数?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: