例如这样的事情来在新实例中打开工作簿,然后启动宏:
外壳(Excel.exe workbook.xlsm!macro1)
或者,如果工作簿已经打开,则:
外壳(xlObject macro1)
最重要的是使用Shell,以便在宏单独运行时继续执行代码。如果不可能的话,也许我可以Shell(file.bat)到一个可以做同样事情的批处理文件。批处理文件是什么样的?
谢谢你。
您不能从命令行(包括命令行管理程序)在主机应用程序内执行VBA代码。但是,有两种选择(Excel#1是当前打开的文件,Excel#2是您要在其中运行代码的文件):
Workbook_Open
的事件处理程序,以便将执行每次打开该文件时-的independet怎么就被打开了。Excel.Application
在VBA中创建一个新对象,然后在该应用程序中打开Excel#2。现在,您可以Run()
在Excel#2的应用程序对象上调用该方法以从Excel#2执行代码,但这将与Excel#1的代码同步进行。但是,您可以使用Excel#2应用程序的OnTime()
方法来延迟宏执行,在这种情况下,当延迟已过去并且代码在Excel#2的应用程序中异步运行时,Excel#2的应用程序将调用该代码。选项2的示例代码如下所示:
Public Function RemoteRun(ByVal strFile As String) As Application
Dim app As Application
Dim wb As Workbook
Set app = New Application
Set wb = app.Workbooks.Open(strFile)
app.OnTime Now + 1 / 24 / 60 / 60, "RemoteMacro"
Set RemoteRun = app
End Function
确保将返回值(Excel#2的应用程序对象)存储在某个位置,以便它不会自动关闭(它仍然必须异步运行RemoteMacro)。如果您不希望Excel#1的代码管理Excel#2的应用程序对象的生存期Visible
,True
则将其属性设置为也可以。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句