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

Bru*_*yne 5 excel vba excel-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
Run Code Online (Sandbox Code Playgroud)

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

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

有办法做我正在尝试的事情吗?我在这个网站上看到我可以做类似的事情:

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

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

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

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

编辑2:越来越近,我发现我可以Excel.Exe通过这个获得通路,excelPath = Application.Path & "\Excel.exe"但无法弄清楚如何调用它.

Ale*_* K. 5

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

AppActivate Application.Caption
Run Code Online (Sandbox Code Playgroud)

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

AppActivate pid
Run Code Online (Sandbox Code Playgroud)

pid结果在哪里GetCurrentProcessId()