使用变量作为应用程序名称

时间:2016-05-03 14:06:03

标签: excel excel-vba vba

我有一个将在程序之间切换的宏。我注意到Excel 2010和2016在系统中的命名方式不同(我的语义错误,抱歉!)而不是必须根据Excel更改代码,我只是想我可以使用变量来设置

Sub test()
'code here in Excel

Dim myApp
myApp = Application.Application
AppActivate "Google Chrome"
Call AppActivate("Google Chrome")
' do one or two things

AppActivate myApp
'do more things in Excel
End Sub

不幸的是,AppActivate myApp不起作用。它抛出

  

运行时错误'5':无效的过程调用或参数

有没有办法做我正在尝试的事情?我在this site看到我可以做类似的事情:

Public vPID As Variant
vPID = Shell("C:\Windows\system32\notepad.exe", vbNormalFocus)
AppActivate (vPID)

除此之外,如果Excel不在将要使用的两台计算机上的同一文件路径中,该怎么办?

编辑:看起来我只需要将应用程序的Title设置为变量(再次,从该站点):

  

通常,AppActivate语句用于根据标题激活现有应用程序。

edit2:越来越近了,我发现我可以通过此Excel.Exe获取excelPath = Application.Path & "\Excel.exe"的路径,但无法弄清楚如何调用它。

2 个答案:

答案 0 :(得分:5)

通过运行代码的实例的窗口标题激活:

AppActivate Application.Caption

或者通过进程ID(可能更强大):

AppActivate pid

其中pidGetCurrentProcessId()的结果。

答案 1 :(得分:2)

以下是一个非常简单的例子:

  1. 打开Word
  2. 激活它

    Sub UsingWord()
    Dim wrdApp As Word.Application
    Dim wrdDoc As Word.Document
    
    Set wrdApp = CreateObject("Word.Application")
    wrdApp.Visible = True
    AppActivate wrdApp.Caption
    End Sub