【Access文章】VBA编程技巧之Shell函数妙用-缪炜
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> Access数据库-模块/函数/VBA


【Access文章】VBA编程技巧之Shell函数妙用

发表时间:2014/7/11 8:16:32 评论(2) 浏览(8865)  评论 | 加入收藏 | 复制
   
摘 要:VBA中为我们提供了很多功能强大使用简单的函数,但一些函数的功能我们甚少使用,甚至根本不了解它们的相关用途。本文就Shell函数的用途做一些讲解,说明如何用Shell函数实现诸如打开文件、打开文件夹,复制文件、替换文件等功能。
正 文:
 

VBA中的Shell函数是一个功能强大简单易用的函数,但很多朋友只用它来简单的打开一个有绝对路径的可执行文件,其实它还有很多其它功能,很多可以从“开始菜单——运行”中执行的命令行都可以用Shell函数来完成。Shell函数有两个参数:pathnameWindowstyleWindowstyle参数在帮助文档里面已经有了详细说明,这样就不再重复,主要讲一下pathname参数。

在帮助文档里面关于pathname参数的说明如下:

pathname   必要参数。Variant (String),要执行的程序名,以及任何必需的参数或命令行变量,可能还包括目录或文件夹,以及驱动器。

    我们可以看到,帮助里的说明过于简略,甚至有些语焉不详,让人很难理解。一般也就用它来运行可执行文件,类似于Shell “C:\test.exe”这样简单的使用一下。下面就讲一下pathname参数的详细使用方法。

1、 运行可执行程序(扩展名为.exe

对于普通可执行程序:将pathname参数直接设为该程序文件的路径名即可,如:Shell "D:\新建文件夹\test.exe"

对于某些特殊系统文件夹(如Windowssystemsystem32等)中的可执行程序,或在注册表子项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.txtShell函数的调用方式就应该是:

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群(群号:198465573)
 
 相关文章
API ShellExecute 功能说明及应用示例  【黄海  2008/8/1】
SHELL实现文件夹浏览对话框方法  【江羽  2010/5/22】
SHELL命令在VBA中的妙用  【赵文斌  2011/7/19】
带有注册功能的登录系统(ACCSHELL改进)  【林岚  2011/11/1】
用Shell打开文件路径及文件名有空格的文件方法  【wsl  2012/4/3】
 
 访客评论
2018/10/30法克柚
不错,收藏+1

2014/10/8程龙
很有用,收藏了~

总记录:2篇  页次:1/1 9 1 :
 
 发表评论
评论内容 (必填)

常见问答
技术分类
相关资源
文章搜索
关于作者

缪炜

文章分类

文章存档

友情链接