友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
飞读中文网 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

excel_vba_编程教程(完整版)-第65章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!



接输入数据或者复制或移动数据。这些操作——打开应用程序以及在它们之间传输数据时不需要手 
动操作的。它们可以通过一些很有趣的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函数来启动控制面板呢?  
1。 打开一新工作簿,保存为Chap09。xls  
2。 在VB编辑器窗口,插入新模块  
3。 重新命名工程为WorkWApplets,模块名为ShellFunction  
4。 输入下面显示的过程StartPanel:  
Sub StartPanel()   
      Shell 〃Control。exe〃; vbNormalFocus   
End Sub   
控制面板里面有很多图标,每个图标执行一个或者多个任务。众所周知,在每个图标后面都有一个 

                                           167 

… 页面 184…

程序的,当用户双击图标或者用箭头选择该图标然后按下Enter键,该程序都会被激活。作为一个 
规律,你总是可以通过查看某个图标的属相来检查什么文件名驱动某个图标。不幸的是,控制面板 
里面的图标的属性选择都被禁止了。然后,你可以通过创建一个到该图标的快捷键来查找控制面板 
里图标文件。例如,在你创建一个更改电脑原始设置的过程之前,我们来找出激活该图标的文件名 
称。  
1。 从“开始”菜单里选择“设置”,然后选择“控制面板”(在Windows XP开始菜单里可以直接看 
    到“控制面板”)  
2。 在控制面板窗口里,右键单击“初始选项”图标,并且从快捷菜单中选择创建快捷键  
3。 点击确定,将快捷键放在桌面上  
4。 关闭控制面板窗口  
5。 返回桌面,在初始选项的快捷键上单击右键,然后选择属性  
6。 在属性窗口,点击快捷键页,然后点击更改图标按钮  

                                                                  
图9…1 每个控制面板里的图标都有一个后缀名为。cpl的文件  
7。 写下。cpl文件名称(Control Panel Library)或者动态链接库文件(。dll)并关闭该练习中开 
    启的所有窗口  
表9…2 激活控制面板图标的一些文件示例  
控制面板图标                  。cpl或者。dll文件  
电话和调制解调器选项          TELEPHON。CPL或MODEM。CPL  
添加/删除程序                 APPWIZ。CPL  
网络和拨号连接                NETCPL。CPL或NETSHELL。DLL  
32…Bit ODBC                   ODBCCP32。CPL  
系统                          SYSDM。CPL  
邮件                          MLCFG32。CPL  
用户和密码                    PASSWORD。CPL或NETPLWIZ。DLL  
日期/时间                      TIMEDATE。CPL  
区域选项                      INTL。CPL  
Internet选项                  INETCPL。CPL  
声音和多媒体属性              MMSYS。CPL  
显示                          DESK。CPL  
鼠标                          MAIN。CPL  
  
下面的国产ChangeSettings示范如何使用Shell函数来启动控制面板的初始设置图标。注意Shell 
函数的参数必须写在括号里,如果你后面需要在你的程序里使用它返回值的话。  
1。 在当前模块里输入过程ChangeSettings,如下所示:  
Sub ChangeSettings()   
      Dim nrTask   
      nrTask = Shell(〃Control。exe intl。cpl〃; vbMinimizedFocus)   
      Debug。Print nrTask   
End Sub   
2。 运行几次过程ChangeSettings,每次从表9…2里列出的清单里提供一个不同的。cpl文件。你可能 

                                           168 

… 页面 185…

    需要将程序改为:  
Sub ChangeSettings2()   
      Dim nrTask   
      Dim iconFile As String   
      iconFile = InputBox(〃Enter the name of the CPL or DLL file:〃)   
      nrTask = Shell(〃Control。exe 〃 & iconFile; vbMinimizedFocus)   
      Debug。Print nrTask   
End Sub   
如果你要启动的程序是微软应用程序,那么除了使用Shell函数外,你还可以很方便地使用VB的方 
法ActivateMicrosoftApp来实现。该方法在微软Excel应用程序的对象里是可用的,例如,要从立 
即窗口启动PowerPoint的话,你所有要做的事情就是输入下面的指令并且按下Enter:  
Application。ActivateMicrosoftApp xlMicrosoftPowerPoint   
注意ActivateMicrosoftApp方法要求一个常量来指定要启动的程序。如果PowerPoint没有打开的 
话,上面的过程就会打开PowerPoint,但是如果该程序已经打开的话,该指令不会再打开一个新的 
PowerPoint界面,只是简单的激活已经在运行的应用程序。你可以结合ActivateMicrosoftApp方法 
使用下列常量,常量的名称指名应用程序名称。  
应用程序名称                  常量  
Access                        xlMicrosoftAccess  
FoxPro                        xlMicrosoftFoxPro  
Mail                          xlMicrosoftMail  
PowerPoint                    xlMicrosoftPowerPoint  
Project                       xlMicrosoftProject  
Schedule                      xlMicrosoftSchedulePlus  
Word                          xlMicrosoftWord  
  

2。在应用程序之间切换  

因为用户可以同时在Windows环境下使用多个应用程序,所以你的VBA过程必须要知道如何在打开的 
程序之间切换。假设除了Excel之外,你还打开了另外两种应用程序:Word和Explorer。你可以按 
照下面的语法使用AppActivate语句来激活已经打开的程序:  
AppActivate title '; wait'   
只有标题参数是必须的,这是应用程序的名称,正如它显示在应用程序窗口的标题栏那样,或者它 
也可以是Shell函数返回的任务ID号码。注意,参数title要跟每个正运行的应用程序的标题字符串 
进行对比,如果没有精确的匹配,那么任何标题字符串里前面的字符和参数title一致的应用程序 
就会被激活。(译者:例如,你要激活Excel,那么title参数应该是“Microsoft Excel”,如果你 
写的是“Microsoft”,那么激活的就也可能是Word,PowerPoint……)。第二个参数wait是可选的, 
它是个布尔值(True或False),明确VB什么时候激活应用程序。如果在这里是False的话,该应用 
程序就立即会被激活,甚至被调应用程序并没有焦点。如果在wait参数处放置True的话,那么被调 
的应用程序就会等到它有了焦点,然后才会激活该应用程序。例如,要激活Word,你就得输入下列 
语句:  
AppActivate “Microsoft Word”  
注意,应用程序名称用双引号引用起来。你也可以使用Shell函数返回的数值作为语句Ap
返回目录 上一页 下一页 回到顶部 1 1
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!