excel_vba_编程教程(完整版)-第50部分
按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
WshNetwork。本节示范如何利用WshShell对象来编写程序启动其它应用程序和创建快捷方式。
31。运行其它应用程序
在本书的下一章,你将学习多种从Excel里启动外部应用程序的方法。你可以加上即将在本节找到
的三种方法。
假设你想要从VBA过程里启动Windows记事本,接下来的过程,你将看到使用WSH的对象WshShell来
运行一个应用程序是多么容易。如果你要运行内置的计算器的话,只要将记事本应用程序名称改为
Calc就可以了。
Sub RunNotepad()
Dim WshShell As Object
Set WshShell = CreateObject(〃WScript。Shell〃)
WshShell。Run 〃Notepad〃
Set WshShell = Nothing
End Sub
上面的过程以声明和创建一个Wshshell对象开始:
Dim WshShell As Object
Set WshShell = CreateObject(〃WScript。Shell〃)
下一语句则使用Run方法来运行要求的应用程序:
WshShell。Run 〃Notepad〃
使用相同的概念,很容易运行视窗的公用应用程序,例如计算器或浏览器:
164
… 页面 181…
WshShell。Run “Calc”
WshShell。Run “Explorer”
过程的最后一行消灭了对象WshShell,因为,不再需要它了。
Set WshShell = Nothing
你可以启动你应用程序和某个特定的文件,而不是打开一个空的应用程序窗口,如下所示:
Sub OpenTxtFileInNotepad()
Dim WshShell As Object
Set WshShell = CreateObject(〃WScript。Shell〃)
WshShell。Run 〃Notepad C:Phones。txt〃
Set WshShell = Nothing
End Sub
试验下面的过程来打开MS…DOS窗口,并且将当前目录下的文件清单打印出来:
Sub RunDOSmand()
Dim WshShell As Object
Set WshShell = CreateObject(〃WScript。Shell〃)
WshShell。Run (〃mand /c Dir 》lpt1:〃)
End Sub
32。创建快捷方式
当你开始传播你的VBA应用程序的时候,用户可能会要求你自动在他们的桌面上放置一个你的软件
的快捷方式。VBA自己没有提供创建快捷方式的方法。很幸运的是,你现在知道如何使用WSH了,你
可以使用它的对象Shell创建应用程序或者网页的快捷方式,不必要用户的干涉。对象WshShell使
用了方法CreateShortcut,你可以按照下述方法:
Set myShortcut = WshShell。CreateShortcut(Pathname)
Pathname是明确快捷文件完整路径的字符串。所有的快捷方式文件都有扩展名。lnk,并且该扩展名
必须包括在文件路径名里面。CreateShortcut方法返回快捷方式对象,下面的表格里列出了很多属
性和一个方法。
方法/语法 示例
TargetPath TargetPath属性是可执行文件的路径
WshShell。TargetPath = ActiveWorkbook。FullName
WindowStyle WindowStyle属性明确快捷方式使用的窗口类型
1 – 普通窗口
3 – 最大化窗口
7 – 最小化窗口
WshShell。WindowStyle = 1
HotKey HotKey 属 性 是 键 盘 快 捷 方 式 ( 例 如 , Alt+f; Shift+g;
Ctrl+Shift+z; 等等)
WshShell。Hotkey = 〃Ctrl+Alt+w〃
IconLocation IconLocation属性是快捷方式图标的位置。因为图标文件里通常
不止一个图标,所以你应该提供图标文件的路径,并且后面标明
图标在文件里的索引号。如果不明确的话,Windows 会使用缺省
的图标。
WshShell。IconLocation = 〃notepad。exe; 0〃
Description Description属性包含一个描述快捷方式的字符串
WshShell。Description = 〃Wordware Web Site〃
WorkingDirectory WorkingDirectory属性明确快捷方式的工作目录
strWorkDir = WshShell。SpecialFolders(〃Desktop〃)
WshShell。WorkingDirectory = strWorkDir
Save 这是对象Shortcut的唯一方法。在使用方法CreateShortcut创建
165
… 页面 182…
一个快捷方式对象并且设置该快捷方式的属性后,必须使用Save
方法将快捷方式对象保存到硬盘上。
创建快捷方式是个三步的过程:
1。 创建一个WshShortcut对象
2。 初始化它的属性
3。 用方法Save将它保存到硬盘
下面的例子创建一个WshShell对象和使用CreateShortcut方法创建两个快捷方式:一个到当前
Excel工作簿的Windows快捷方式,和一个到Wordware Publishing网页的互联网快捷方式。两个快
捷方式都放在用户的桌面上。该过程使用对象WshShell的SpecialFolders属性来返回到视窗桌面的
路径。
Sub CreateShortcut()
' this script creates two desktop shortcuts
Dim WshShell As Object
Dim objShortcut As Object
Set WshShell = CreateObject(〃WScript。Shell〃)
' create an internet shortcut
Set objShortcut = WshShell。CreateShortcut(WshShell。 _
SpecialFolders(〃Desktop〃) & 〃Wordware。url〃)
objShortcut。TargetPath = 〃wordware〃
objShortcut。Save
' create a file shortcut
Set objShortcut = WshShell。CreateShortcut(WshShell。 _
SpecialFolders(〃Desktop〃) & 〃” & ActiveWorkbook。Name & 〃。lnk〃)
With objShortcut
。TargetPath = ActiveWorkbook。FullName
。WindowStyle = 7
。Save
End With
Set objShortcut = Nothing
Set WshShell = Nothing
End Sub
技巧8…12 使用SpecialFolders属性
你可以使用SpecialFolders属性在你的机器上找到特殊文件夹的位置。下述特殊文件夹是可用的:
AllUsersDesktop(所有用户桌面), AllUsersStartMenu(所有用户开始菜单),AllUsersPrograms
(所有用户程序),AllUsersStartup(所有用户启动),Desktop(桌面),Favorites(收藏),Fonts
(字体),MyDocuments(我的文档),NetHood(网络连接),PrintHood(打印机),Programs(程
序),Recent(最近),SendTo(发送到),StartMenu(开始菜单),Startup(启动)和 Templates
(模版)。如果请求的特殊文件夹不可用,那么SpecialFolders属性就会返回一个空字符串。
33。接下来……
在本章的课程里,你学习并且测试了让你操作文件系统的VBA函数和语句。你知道了如何读取和修
改与文件和文件夹有关的信息,而且,知道了如何执行对顺序,随机和二进制文件的读和写的操作。
你也学习了如何使用WSH来访问FileSystemObject和进行其它操作,例如启动应用程序和使用对象
WshShell创建Windows快捷方式。如果你对讨论的函数和语句更详细的东西感兴趣的话,那么就花
些时间来浏览一下VB在线帮助吧。
接下来的一章将给你介绍更多的自动化任务。例如,你将学习如何使用VBA来控制其它应用程序。
你将学习启动应用程序的多种方法,并且研究如何直接从Microsoft Excel里操纵其它应用程序。
166
… 页面 183…
第九章 利用 VBA 控制其它应用程序
你每天在办公室里或者家里在你的电脑上工作时,都要用到很多种应用程序。要从你的硬盘或者软
盘上查找某个文件的话,你就要打开视窗浏览器。当你要设置系统时间或者更改屏幕外观的话,可
以点击控制面板上的相应的图标。如果你的电脑上安装了微软办公软件套餐的话,就可以使用Word
创建各种各样的文件,并且依靠Excel进行所有的计算。微软Access对于保存重要的数据表非常有
用,而PowerPoint则有助于你使用声音和图片。最后,微软Outlook使你易于保存你的联系、时间
和约会并且分享给他人。使用这些应用软件的时候,你经常要在他们之间切换,你可以使用键盘直
接输入数据或者复制或移动数据。这些操作——打开应用程序以及在它们之间传输数据时不需要手
动操作的。它们可以通过一些很有趣的VBA函数和指令来自动完成。在本章,你将学习多种从VBA
过程里打开应用程序的方法,并且找到如何使用称为自动化的技术直接从微软Excel直接控制其它
应用程序。
1。启动应用程序
启动一个应用程序的方法不止一个,实际上,你至少可以使用五种方法手动打开某个程序:通过“开
始”|“程序”菜单,快捷键,“运行”命令,MS…DOS窗口,或者在视窗浏览器里双击可执行文件。
本节假设你对手动启动应用程序很熟悉,并且很想从Excel内部的VB编辑窗口试验其它启动应用程
序的方法。
我们从最简单的开始吧——Shell函数。该函数使你可以从VBA过程里直接打开任意程序。假设你的
过程必须打开视窗记事本,要打开记事本,你所有要做的就是在关键字Sub和End Sub之间加上一条
语句,或者更好的方法是在立即窗口里输入下述语句,并且按下回车键:
Shell 〃notepad。exe〃; vbMaximizedFocus
你将立即看到结果。
在上面的语句里,“notepad。exe”是你要打开的程序的名称。如果你担心程序找不到的话,那么该
名称就应该包含完整的路径(启动器名称和文件夹名称)。注意,程序名称用双引号括起来了。Shell
函数的第二个参数可以忽略。该参数明确窗口形式(也就是当程序启动的时候,它如何显示在屏幕
上的)。在上面的例子里,记事本将显示为最大化的窗口。如果没有明确窗口形式,那么程序就会
被最小化(参见表9…1)。
窗口形式常数 值 窗口显示情况
vbHide 0 窗口被隐藏
vbNormalFocus 1 普通大小,并带焦点
vbMinimizedFocus(默认设 2 最小化,并带焦点(这是缺省设置)
置)
vbMaximizedFocus 3 最大化,并带焦点
vbNormalNoFocus 4 普通大小,并失去焦点
vbMinimizedNoFocus 6 最小化,并失去焦点
如果Shell函数能够启动某个可执行文件,那么它就会返回一个叫做任务ID的号码。该号码是指示
应用程序启动的唯一号码。如果Shell函数不成功的话(也就是说某应用程序不能打开),VB就会产
生一错误。如果你要使用Shell函数启动的应用程序的话,就不要在Shell函数后面输入任何语句。
Shell函数启动程序是不同时的,意思是说VB启动Shell函数指定的应用程序,并且,VB在启动程序
后,立即就回到过程里面去继续剩余的指令(因此,你没有机会立即使用该应用程序)。你如果使
用Shell函