SHELL实现文件夹浏览对话框方法
时 间:2010-05-22 12:16:21
作 者:江羽 ID:3967 城市:南昌
摘 要:SHELL实现文件夹浏览对话框方法
正 文:
SHELL对象是微软对一些常用外壳操作函数的封装。如:打开或浏览一个文件夹、查找文件、关闭计算机等等,而且还能浏览整个文件系统,获取文件或文件夹的各种信息。
由于这些封装是建立在OLE自动化服务的基础之上,所以我们也可以在ACCESS中VBA中方便的调用该对象。
一、如何在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:(可选的),用来设置浏览的最顶层文件夹,缺省时为“桌面”,你可以将其设置为一个路径或“特殊文件夹常数”。
3.1 简单实例(见图):
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方法则报错。
3.2 对话框增加所选文件夹显示文本框(见下图)
Dim MyShell As New Shell
Dim MyFolder As Folder
' Options参数改为十六进制数10
Set MyFolder = MyShell.BrowseForFolder(0, "请选择文件夹:", &H10)
3.2 对话框显示提示文字
Dim MyShell As New Shell
Dim MyFolder As Folder
' Options参数改为十六进制数100
Set MyFolder = MyShell.BrowseForFolder(0, "请选择文件夹:", &H100)
说明:Options参数改为十六进制数200时,不显示【新建文件夹】按钮,如果改为负数会显示特殊的浏览对话框,大家可以自己测试。
3.3 通过 [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、其它指定顶层文件夹常量参看实例,你也可以自己测试。
江羽
Access软件网官方交流QQ群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- Access对子窗体数据进行批...(10.30)
- 最精简的组合框行来源数据快速输...(10.25)
- Access仿平台的多值选择器...(10.24)
- 【Access日期区间段查询】...(10.22)
- 【Access源码示例】VBA...(10.12)
- Access累乘示例,Acce...(10.09)
- 数值8.88,把整数8去掉,转...(10.08)
- 【Access自定义函数】一个...(09.30)
- 【Access选项卡示例】Ac...(09.09)
学习心得
最新文章
- Access系统自带的日期选择器不...(11.08)
- 分享一下Access工程中的acw...(11.07)
- Access快速开发平台--让有权...(11.04)
- Access快速开发平台--审批选...(11.01)
- ACCESS两张表先各自排序,然后...(10.31)
- Access对子窗体数据进行批量+...(10.30)
- SqlServer中如何用SQL命...(10.29)
- Access报表中的分组功能用代码...(10.28)
- 用Access计算库存结余的一个方...(10.26)
- 最精简的组合框行来源数据快速输入(...(10.25)