【Access文章】VBA编程技巧之Shell函数妙用
时 间:2014-07-11 08:16:32
作 者:缪炜 ID:24010 城市:江阴
摘 要:VBA中为我们提供了很多功能强大使用简单的函数,但一些函数的功能我们甚少使用,甚至根本不了解它们的相关用途。本文就Shell函数的用途做一些讲解,说明如何用Shell函数实现诸如打开文件、打开文件夹,复制文件、替换文件等功能。
正 文:
VBA中的Shell函数是一个功能强大简单易用的函数,但很多朋友只用它来简单的打开一个有绝对路径的可执行文件,其实它还有很多其它功能,很多可以从“开始菜单——运行”中执行的命令行都可以用Shell函数来完成。Shell函数有两个参数:pathname和Windowstyle,Windowstyle参数在帮助文档里面已经有了详细说明,这样就不再重复,主要讲一下pathname参数。
在帮助文档里面关于pathname参数的说明如下:
pathname 必要参数。Variant (String),要执行的程序名,以及任何必需的参数或命令行变量,可能还包括目录或文件夹,以及驱动器。
我们可以看到,帮助里的说明过于简略,甚至有些语焉不详,让人很难理解。一般也就用它来运行可执行文件,类似于Shell “C:\test.exe”这样简单的使用一下。下面就讲一下pathname参数的详细使用方法。
1、 运行可执行程序(扩展名为.exe)
对于普通可执行程序:将pathname参数直接设为该程序文件的路径名即可,如:Shell "D:\新建文件夹\test.exe"。
对于某些特殊系统文件夹(如Windows、system、system32等)中的可执行程序,或在注册表子项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths下注册过的程序,可以不用指定路径,甚至扩展名也可以不用指定,如打开计算器我们就可以直接这样调用:
Shell "calc", vbNormalFocus
否则必须要指定打开程序的路径名,如:
Shell "F:\MyNotepad.exe D:\test.txt",vbNormalFocus。
2、 打开非可执行文件,如文本文件(.txt)、Word文档(.doc)等
我们必须先指定一个用来打开这个文件的程序,程序名放在前面,文件路径名放在后面。例如我们要用记事本打开一个文本文件D:\test.txt,Shell函数的调用方式就应该是:
Shell "notepad D:\test.txt",vbNormalFocus。
当文件名或路径名中存在空格时,必须要使用英文半角双引号(")来对其进行界定,但这个双引号同时又是VBA中的字符串界定符,所以按照VBA的语法规定,我们要在字符串中使用双引号,就必须用两个双引号来表明这是一个用在字符串中的双引号。如:
Shell Shell "notepad ""D:\test 1.exe""", vbNormalFocus
如果我们要用一个变量来代表这个路径名,就应该是:
Dim strPathName As String
strPathName="D:\test 1.exe"
Shell Shell "notepad """ & strPathName & """", vbNormalFocus
另外由于Shell函数支持命令行,所以我们还可以使用命令行参数来实现一些相关功能,下面是一些在Access VBA中进行运用的举例:
打开计算器:
Shell "calc", vbNormalFocus
打开写字板:
Shell "write", vbNormalFocus
打开记事本:
Shell "notepad", vbNormalFocus
打开文件夹:
Shell "explorer C:\我的文件夹", vbNormalFocus
用Word打开doc文档:
Shell "winword C:\myword.doc",vbNormalFocus
打开mdb数据库文件:
Shell "msaccess C:\mydb.mdb",vbNormalFocus
打开mdb数据库文件(文件名含有空格):
Shell "msaccess ""C:\my db.mdb""",vbNormalFocus
打开mdb数据库文件(以运行时方式):
Shell "msaccess ""C:\my db.mdb"" /runtime",vbNormalFocus
将文件夹D:\back中的test.mdb文件替换为D:\test.mdb文件(强制替换,即使被替换的文件已经被打开):
Shell "replace D:\test.mdb D:\back"
将数据库文件D:\test.mdb复制到备份文件夹D:\back中(文件已存在时命令无效):
Shell "replace D:\test.mdb D:\back /a"
将文件夹D:\back及其所有子文件夹中的test.mdb文件替换为D:\test.mdb文件:
Shell "replace D:\test.mdb D:\back /s"
将文件夹D:\back中的文件test.mdb替换为D:\test.mdb(用来替换的源文件比被替换的文件新的时候才有效):
Shell "replace D:\test.mdb D:\back /u"
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.22)
- Access快速开发平台企业版--...(11.18)
- 不会用多表联合查询,多表查询没结果...(11.16)
- 【案例分享】主键字段值含有不间断空...(11.16)
- Access快速开发平台--后台D...(11.14)
- 微软Access邀测新Monaco...(11.12)
- Access列表框左右互选、列表框...(11.11)
- 高效率在导入数据前删除记录(11.10)
- Access报价单转订单示例代码(11.08)
- Access系统自带的日期选择器不...(11.08)