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"但无法弄清楚如何调用它.
要通过运行代码的实例的窗口标题激活:
AppActivate Application.Caption
Run Code Online (Sandbox Code Playgroud)
或者通过进程ID(可能更强大):
AppActivate pid
Run Code Online (Sandbox Code Playgroud)
pid结果在哪里GetCurrentProcessId()?