Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-教程

SHELL实现文件夹浏览对话框方法

时 间:2010-05-22 12:16:21
作 者:江羽   ID:3967  城市:南昌
摘 要:SHELL实现文件夹浏览对话框方法
正 文:

SHELL对象是微软对一些常用外壳操作函数的封装。如:打开或浏览一个文件夹、查找文件、关闭计算机等等,而且还能浏览整个文件系统,获取文件或文件夹的各种信息。

由于这些封装是建立在OLE自动化服务的基础之上,所以我们也可以在ACCESSVBA中方便的调用该对象。


一、如何在ACCESS使用SHELL对象

ACCESS VBA所提供的对象或函数的功能比较有限,但我们可以通过引用其它的类型库和自动化对象用以扩展自身的功能。

SHELL其实就是一个封装好的类库,如果我要使用SHELL对象时,需完成对其的引用。按Alt+F11进入VBA编辑窗口,点【工具】-【引用】菜单,打开【引用】对话框,在“可使用的引用”中钩选:“Microsoft Shell Controls and Automation”,然后点【确定】就完成了对SHELL对象类库的引用(见下图)



二、了解BrowseForFolder方法

BrowseForFolder方法用以显示浏览文件夹对话框,该方法返回一个文件夹(Folder)对象,方法及参数如下:

l     语法:

strDir = Shell.BrowseForFolder(Hwnd, Title,Options, [RootFolder])

l     参数:

Hwnd包含对话框的窗体句柄(handle),一般设置为0 

Title将在对话框中显示的说明,为字符串。 

Options使用对话框的特殊方式,为长整数,一般设置为0

 RootFolder(可选的),用来设置浏览的最顶层文件夹,缺省时为桌面,你可以将其设置为一个路径或特殊文件夹常数 

 
三、SHELL实现文件夹浏览对话框实例讲解:

31 简单实例(见图):

Dim MyShell   As New Shell  '申明并实例化SHELL对象

Dim MyFolder  As Folder     '文件夹对象

'显示文件夹浏览对话框

Set MyFolder = MyShell.BrowseForFolder(0, "请选择文件夹:", 0)

'如果该对象释放则退出过程,否则输出文件夹路径

If MyFolder Is Nothing Then Exit Sub

MsgBox MyFolder.Self.Path

说明:文件夹对象Self方法表示所选文件夹自身,在BrowseForFolder方法可选参数[RootFolder]未设定值或该值为0时,即顶层文件夹为默认“桌面”时,如用Items方法则报错。

32 对话框增加所选文件夹显示文本框(见下图)

Dim MyShell As New Shell

Dim MyFolder As Folder

' Options参数改为十六进制数10  

Set MyFolder = MyShell.BrowseForFolder(0, "请选择文件夹:", &H10)

32 对话框显示提示文字

Dim MyShell As New Shell

Dim MyFolder As Folder

' Options参数改为十六进制数100  

Set MyFolder = MyShell.BrowseForFolder(0, "请选择文件夹:", &H100)

说明Options参数改为十六进制数200时,不显示【新建文件夹】按钮,如果改为负数会显示特殊的浏览对话框,大家可以自己测试。

33 通过 [RootFolder] 可选参数指定顶层文件夹

RootFolder参数默认或为0值时,顶层文件夹为“桌面”,下面实例我们将顶层文件夹指定“我的电脑”(见下图)

Const ssfDRIVES = &H11 '顶层文夹“我的电脑”常量

Dim MyShell   As Shell  '申明SHELL对象

Dim MyFolder  As Folder '申明文件夹对象

'实例化SHELL对象

Set MyShell = New Shell

'显示文件夹,指定“我的电脑”为顶层文件夹

Set MyFolder = MyShell.BrowseForFolder(Me.Hwnd, "请选择文件夹", 0, ssfDRIVES)

'文件夹路径输出

If Not MyFolder Is Nothing Then

  MsgBox MyFolder.Items.Item.Path '测试

End If

说明:1、前面曾提到过,如指定了顶层文件夹,我们可以使用Items方法;

      2、其它指定顶层文件夹常量参看实例,你也可以自己测试。

 

                                              

                                                 江羽 2010-05-22

 

 

*****************************************************************************************



实例及Word文稿下载:点击下载此附件



Access软件网官方交流QQ群 (群号:54525238)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助