分享

你想打开任意程序吗?没问题,VBA代码可以做到

 东西二王 2019-05-17

大家好,我们今日继续讲解VBA代码解决方案的第137讲内容:VBA代开任意程序的方法。

我们在写代码的时候,有时候会必须打开另外一个文件,今日的内容就是解决这个问题,在VBA代码中如何可以打开其他的程序呢?我讲解两种方法。

一Shell函数。该函数让你可以从VBA过程里直接打开任意程序。

Shell函数是什么呢?它既不是工作表函数,也不是api函数,它是vba自带的函数。但是它却神通广大,能抵n个api函数,api是应用程序接口,shell就是应用程序和系统之间的桥梁。它的用法很简单,就是执行一个可执行文件。与开始菜单的运行功能一样。

语法:Shell(pathname[,windowstyle])

pathname 是要执行的程序名,可能还包括目录或文件夹

Windowstyle 表示在程序运行时窗口的样式,如下:

窗口形式常数 值 窗口显示情况

vbHide 0 窗口被隐藏

vbNormalFocus 1 普通大小,并带焦点

vbMinimizedFocus(默认设 2 最小化,并带焦点(这是缺省设置)

置)

vbMaximizedFocus 3 最大化,并带焦点

vbNormalNoFocus 4 普通大小,并失去焦点

vbMinimizedNoFocus 6 最小化,并失去焦点

例一:假设你的过程必须打开视窗记事本, Shell 'notepad.exe', vbMaximizedFocus

在上面的语句里,'notepad.exe'是你要打开的程序的名称。如果你担心程序找不到的话,那么该名称就应该包含完整的路径(启动器名称和文件夹名称)。注意,程序名称用双引号括起来了。Shell函数的第二个参数可以忽略。该参数明确窗口形式(也就是当程序启动的时候,它如何显示在屏幕上的)。在上面的例子里,记事本将显示为最大化的窗口。

例二:你如果使用Shell函数来启动控制面板呢?Shell 'Control.exe', vbNormalFocus

代码:

Sub MYNOTE()

Shell 'notepad.exe', vbMaximizedFocus

End Sub

Sub MYControl()

Shell 'Control.exe', vbNormalFocus

End Sub

代码截图:

你想打开任意程序吗?没问题,VBA代码可以做到

运行例1和例2 的截图:

你想打开任意程序吗?没问题,VBA代码可以做到

你想打开任意程序吗?没问题,VBA代码可以做到

注意点1:如果Shell函数能够启动某个可执行文件,那么它就会返回一个叫做任务ID的号码。该号码是指示应用程序启动的唯一号码。如果Shell函数不成功的话(也就是说某应用程序不能打开),VB就会产生一错误。如果你要使用Shell函数启动的应用程序的话,就不要在Shell函数后面输入任何语句。

注意点2: VBA在启动程序后,立即就回到过程里面去继续剩余的指令(因此,你没有机会立即使用该应用程序)。

二:ActivateMicrosoftApp 方法。

那么除了使用Shell函数外,你还可以很方便地使用方法ActivateMicrosoftApp来实现。该方法在微软Excel应用程序的对象里是可用的,可以激活一个 Microsoft 应用程序。如果该应用程序已经处于运行状态,则本方法激活一个 Microsoft 应用程序。如果该应用程序已经处于运行状态,则本方法将启动应用程序。

语法: expression.ActivateMicrosoftApp(index)

expression 必需。该表达式返回一个 Application对象

index 必需XlMSApplication。指定要激活的 Microsoft 应用程序

使用下列常量,常量的名称指名应用程序名称。

Access xlMicrosoftAccess

FoxPro xlMicrosoftFoxPro

Mail xlMicrosoftMail

PowerPoint xlMicrosoftPowerPoint

Project xlMicrosoftProject

Schedule xlMicrosoftSchedulePlus

Word xlMicrosoftWord

例如,要从立即窗口启动PowerPoint的话,你所有要做的事情就是输入下面的指令并且按下Enter: Application.ActivateMicrosoftApp xlMicrosoftPowerPoint

注意ActivateMicrosoftApp方法要求一个常量来指定要启动的程序。如果PowerPoint没有打开的话,上面的过程就会打开PowerPoint,但是如果该程序已经打开的话,该指令不会再打开一个新的PowerPoint界面,只是简单的激活已经在运行的应用程序。

代码:

Sub MYPowerPoint()

Application.ActivateMicrosoftApp xlMicrosoftPowerPoint

End Sub

截图:

你想打开任意程序吗?没问题,VBA代码可以做到

运行:

你想打开任意程序吗?没问题,VBA代码可以做到

其实在VBA代码中还有些其他的可以打开程序的方法,就不一一列举了。请大家在实践中摸索掌握,

今日内容回向:

1 如何用VBA打开一个程序?

2 本讲讲的两种方法有什么不同?

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多