按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
语句:
AppActivate “Microsoft Word”
注意,应用程序名称用双引号引用起来。你也可以使用Shell函数返回的数值作为语句AppActivate
的参数:
‘ run Microsoft Word 运行Word应用程序
ReturnValue = Shell(〃C:Microsoft OfficeOfficeWord。exe〃;1)
‘ activate Microsoft Word 激活Word
AppActivate ReturnValue
语句AppActivate用来在应用程序之间切换,所以要求这些程序已经在运行。该语句仅仅改变焦点,
指定的应用程序变为当前活动的窗口。AppActivate语句不会启动任何应用程序,参见下一章节的
过程FindCPLFiles,这也是使用该语句的一个例子。我们来练习一下最近介绍的几个VBA语句:
169
… 页面 186…
1。 通过在立即窗口里输入下列VBA语句来打开资源管理器:
Shell 〃Explorer〃
按下回车键后,被请求的应用程序就被打开了,带有“我的文档”文件夹的图标就会出现在任务栏
上。
2。 在立即窗口里输入下列代码:
AppActivate 〃My Documents〃
按下回车键后,焦点就会移至我的文档窗口。
3。控制其它应用程序
既然你已经知道了如何使用VBA语句来启动一个程序,以及在应用程序之间切换,那么我们来看看
一个应用程序是如何与另外一个应用程序交流的。对于一个应用程序来说,要控制另一个应用程序
的最简单的方式就是使用SendKeys语句。该语句允许你将许多的按键发送到活动应用程序窗口,你
可以发送一个或组合键并且得到直接使用键盘的同样效果。SendKeys语句如下所示:
SendKeys string '; wait'
这个必须的参数string是你要发送到活动应用程序窗口的键或组合键,例如,使用下列指令来发送
字母“f”键:
SendKeys 〃f〃
要发送组合键Alt+f,使用:
SendKeys 〃%f〃
百分符号(%)是表示Alt键的字符串。要发送例如Shift+Tab的组合键的话,那么就要使用下面的
语句:
SendKeys 〃+{TAB}〃
加号(+)表示Shift键。要发送其它键或者其它组合键的话,请参见表9…3列出的相应字符串。
技巧9…1 SendKeys和其它应用程序
你只能发送按键到那些为微软视窗操作系统设置的应用程序。
技巧9…2 SendKeys和被保护的字符
有些字符在和SendKeys语句一起使用时具有特殊的意义,它们是:加号(+),脱字符号(^),符合
(~)和括号()。要发送这些字符到另一个应用程序的话,就必须将它们用打括号{}括起来。要发
送打括号时,则需要输入{{}和{}}
SendKeys语句的第二个参数是可选的,wait是个逻辑值True或者False。如果是False(缺省),那
么VB在发送按键后立即返回过程,如果为True,那么VB只有在发送的按键执行后才能返回到过程。
如果要发送一个表格9…3里面没有列出的字符的话,那么记住这些代码必须用引号括起来,例如:
SendKeys “{BACKSPACE}”
表9…3 SendKeys语句里使用的按键代码
键 代码 键 代码
空格键 {BACKSPACE} 滚动锁定 {SCROLLLOCK}
{BS} Tab {TAB}
{BKSP} 向上箭头 {UP}
Break键 {BREAK} F1
大写锁定键 {CAPSLOCK} F2 {F2}
删除键 {DELETE} F3 {F3}
{DEL} F4 {F4}
向下箭头 {DOWN} F5 {F5}
End键 {END} F6 {F6}
回车键 {ENTER} F7 {F7}
~ F8 {F8}
Esc键 {ESC} F9 {F9}
帮助键 {HELP} F10 {F10}
Home键 {HOME} F11 {F11}
插入键 {INSERT} F12 {F12}
170
… 页面 187…
{INS} F13 {F13}
向左箭头 {LEFT} F14 {F14}
数字锁定键 {NUMLOCK} F15 {F15}
向下翻页键 {PGDN} F16 {F16}
向上翻页键 {PGUP} Shift +
屏幕打印键 {PRTSC} Ctrl ^
向右箭头 {RIGHT} Alt %
技巧9…3 SendKeys语句对格敏感
当你使用SendKeys语句发送按键时,你一定要牢记区分字符的大小格。因此,要发送组合键Ctrl+d
的话,你必须使用^d,而发送Ctrl+Shift+D的话,则必须使用字符串:^+d
在本章前期,你学习了。cpl文件启动多种控制面板的图标。你现在要创建的VBA过程目的是要定位
你硬盘上所有扩展名为。cpl的文件。
1。 使用立即窗口来启动资源管理器:
Shell “Explorer。”
“我的文档”图标将出现在屏幕下方的任务栏上。
2。 在当前工程里插入新模块并且重命名为SendKeysStatement
3。 输入过程FindCPLFiles,如下所示:
Sub FindCPLFiles()
' The keystrokes are for Windows 2000
AppActivate 〃My Documents〃
' activate the Search window 激活搜索窗口
SendKeys 〃{F3}〃; True
' move the pointer to the Search for files将光标移到搜索文件
' and folders named text box 和文件夹(名称在文本框里)
SendKeys 〃%m〃; True
' type in the search string 输入要搜索的字符串
SendKeys 〃*。cpl〃; True
' move to the Look in drop down box 焦点移到下拉框
SendKeys 〃{Tab}{Tab}〃; True
' change to the root directory 更改根目录
SendKeys 〃C:”; True
' execute the Search 执行搜索
SendKeys 〃%s〃; True
End Sub
4。 切换到Excel应用程序窗口并且运行过程FindCPLFiles(使用Alt+F8打开宏对话框,选择过程名
称,再点击运行)。
上面过程的第一条语句使用AppActivate语句(参见前面章节)来激活已经打开的应用程序,还记
得你在立即窗口里使用Shell语句激活了资源管理器吗?剩余的语句发送一些必要的按键到活动应
用程序。本过程的结果是扩展名为。cpl的控制面板文件的搜索结果列表。你也可以使用一个
SendKeys语句来发送所有必须的按键(参见下面的例子),然而,一步一步发送按键更容易理解程
序。
Sub FindCPLFiles2()
AppActivate 〃My Documents〃
SendKeys 〃{F3}% m*。cpl{Tab}{Tab}C:%s〃; True
End Sub
4。控制应用程序的其它方法
尽管你可以使用SendKeys语句来传递命令给其它应用程序,但是你还是必须要求助于其它方法来获
得对该应用程序的充分控制。有两种标准方法可以供应用程序和另外一种应用程序交流。最新的方
171
… 页面 188…
法,被称为自动控制,它允许你访问和操纵另一种应用程序的对象。你可以通过自动控制编写VBA
过程,通过引用其它应用程序的对象、属性和方法来控制其它应用程序。在本章接下来的章节里,
你将学习如何通过自动控制来控制其它应用程序。称为DDE(动态数据交换)的老数据交换技术是
允许你在两个应用程序之间动态发送数据的协议,它通过创建一个特殊的通道来发送和结束信息。
DDE非常慢,使用困难,只有当你需要与一个不支持自动控制的老应用程序交流时,才需要使用DDE。
5。了解自动控制
当和另外一个应用程序交流时,你可能需要更多的功能,而不只是激活它来发送按键。例如,你可
能需要在该应用程序里创建和操纵对象,你可以在Excel电子表格力插入整个Word文档。因为Excel
和Word都支持自动控制,所以,你可以在Excel里编写一个VBA过程在操作Word对象,比如文档或者
段落。支持自动控制的应用程序称为自动控制服务器(Automation servers)或者自动控制对象
(Automation objects)。
能够操作服务器对象的应用程序称为自动控制控件。有些应用程序只能是服务器或者控件,而其它
的则既可以是服务器也可以是控件。Microsoft Office 2000和2002都可以作为自动控制服务器和
控件。自动控制控件可以是安装在