我有一个将在程序之间切换的宏。我注意到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"
的路径,但无法弄清楚如何调用它。
答案 0 :(得分:5)
通过运行代码的实例的窗口标题激活:
AppActivate Application.Caption
或者通过进程ID(可能更强大):
AppActivate pid
其中pid
是GetCurrentProcessId()
的结果。
答案 1 :(得分: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