为应用程序名称使用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
其中pid
是GetCurrentProcessId()
的结果。
这是一个非常简单的例子:
- 打开Word
-
激活它
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