我有一个使用API打开ETABS的VBA宏,但命令myETABSObject.ApplicationStart
有时不起作用,在打开ETABS时卡住了。我想知道是否有办法强制退出ETABS,关闭并打开Excel,然后再次开始运行宏?
If AttachToInstance Then
'attach to a running instance of ETABS
'get the active ETABS object
Set myETABSObject = GetObject(, "CSI.ETABS.API.ETABSObject")
Else
If SpecifyPath Then
'create an instance of the ETABS object from the specified path
Set myETABSObject = myHelper.CreateObject(ProgramPath)
Else
'create an instance of the ETABS object from the latest installed ETABS
Set myETABSObject = myHelper.CreateObjectProgID("CSI.ETABS.API.ETABSObject")
End If
'start ETABS application
myETABSObject.ApplicationStart
End If
答案 0 :(得分:0)
正如您在评论中看到的那样,这是不可能的。但是你可以做一个非常粗略的解决方法。
创建在打开工作簿时运行的子。此子将包含您要再次运行的代码。但是sub的第一步应该是检查一些参数,所以每次打开它时它都不会运行,而只是在重启时运行。例如,参数可以是某个单元格中的值,在关闭工作簿之前放在那里。
现在唯一的问题是如何在工作簿关闭后打开它。您可以创建一个帮助程序Excel工作簿,也可以创建在打开工作簿时运行的子工作簿。 sub做的唯一事情就是设置一个计时器,在等待期之后,它会打开你想要重启的工作簿。您需要在关闭另一个工作簿之前打开帮助工作簿。
这应该可以满足您的需求。当然,您无法发布任何内容,但出于您的目的(例如每周报告)应该没问题。