《excel_vba_编程教程(完整版)》

下载本书

添加书签

excel_vba_编程教程(完整版)- 第58节


按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
一个应用程序是如何与另外一个应用程序交流的。对于一个应用程序来说,要控制另一个应用程序 
的最简单的方式就是使用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都可以作为自动控制服务器和 
控件。自动控制控件可以是安装在你电脑上的各种ActiveX控件,你将在下一章里学习这些对象。  

6。了解链接和嵌入  

在你学习如何使用自动控制从VBA过程控制其它应用程序之前,我们来看一看如何手动链接和插入 
对象。人们熟知的OLE,对象链接和嵌入,允许你创建组合文档。组合文档包含其它应用程序创建 
的对象。例如,如果你要在Excel里嵌入一个Word文档的话,Excel只要知道创建该对象需要用到的 
应用程序名称,以及该对象在屏幕上显示的方法。组合文档有链接或者对象嵌入产生。当你使用手 
动方法来嵌入对象时,你首先要在一个应用程序里复制它,再粘贴到另一个应用程序里。链接对象 
和嵌入对象的主要区别是对象储存和更新的方式。我们来试验一下:  
1。 激活Word并打开任意一个文档  
2。 选择和复制任意一段文本  
3。 在Excel工作表里,使用下述四种方法之一将复制的文本进行粘贴:   
    *      粘贴为文本(选择编辑|粘贴)。复制的文本就会出现在活动单元格(见图9…2,单元格 
         A2)  
    *      粘贴为嵌入对象(选择编辑|选择性粘贴,点击“粘贴选项”按钮,并且在清单里选择 
          “Microsoft Word Document 对象”。)粘贴的文本将作为一个嵌入的对象(见图9…2,单 
         元格A5)。该嵌入的对象成为了目的文件的一部分。因为该嵌入的对象没有和原始数据链 
         接,所以该信息是静态的。当文件源中的数据改变时,该嵌入的对象不会被更新。如果要 
         更改嵌入的数据,你就必须双击它,这样就会打开该对象在源程序里编辑它。当然,该源 
         程序必须已经安装在你的电脑上了。当你嵌入对象时,所有的数据都会存储在目的文件里, 
         这会导致文件大小显著增大。注意,当你嵌入一个对象后,Excel的编辑栏里将显示:  
         =EMBED(〃Word。Document。8〃;〃〃)  
    *      粘贴为链接对象(选择编辑|选择性粘贴,点击“粘贴链接”选项,然后在列表里选择 
          “Microsoft Word Document 对象”)。虽然目的文件显示了所有的数据,但是它仅仅储存 
         了该数据的地址。当你双击该链接的对象时(见图9…2,单元格A9),原应用程序就会被启 
         动。链接对象是一种动态的操作,这意味着当源文件里的数据改变时,链接的数据就会自 
         动更新。因为目的文件只包含对象如何与源文件链接的信息,所以,对象链接并不会增加 
         目的文件的大小。下面的公式是Excel用来链接对象的:  
         =Word。Document。8|'C:Documents                 and  
小提示:按 回车 [Enter] 键 返回书目,按 ← 键 返回上一页, 按 → 键 进入下一页。 赞一下 添加书签加入书架