Access专家课堂周年庆
网站公告
·Access快速平台QQ群号:277422564    ·Access快速开发平台下载地址及教程    ·欢迎添加微信交流账号:AccessoftChu    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-模块/函数/VBA

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

时 间:2014-07-11 08:16:32
作 者:缪炜   ID:24010  城市:江阴
摘 要: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群 (群号:163466567)       access源码网店

最新评论 查看更多评论(3)

2019/7/4 23:03:13lord
牛人

2018/10/30 17:53:56法克柚
不错,收藏+1

2014/10/8 21:39:18程龙
很有用,收藏了~

发表评论您的评论将提升作者分享的动力!快来评论一下吧!

用户名:
密 码:
内 容:
 

常见问答

技术分类

相关资源

最新帖子

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