为应用程序名称使用variables

我有一个将在程序之间切换的macros。 我注意到,Excel 2010和2016在系统中的命名是不同的(我的语义在这里是错误的,对不起!),而不是必须根据哪个Excel来更改代码,我只是想我可以使用一个variables来设置。

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”:无效的过程调用或参数

有没有办法做我想要的? 我在这个网站上看到我可以做这样的事情:

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

但是,如果Excel不在两台计算机的相同文件path上,它将被用于什么?

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

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

编辑2:越来越近,我发现我可以通过这个excelPath = Application.Path & "\Excel.exe"得到Excel.Exe的path,但不知道如何调用。

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

 AppActivate Application.Caption 

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

 AppActivate pid 

其中pidGetCurrentProcessId()的结果。

这是一个非常简单的例子:

  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