我有一个使用API打开ETABS的VBA宏,但是命令myETABSObject.ApplicationStart
有时不起作用,它在打开ETABS时会卡住。我想知道是否有一种方法可以强迫退出ETAB,关闭并打开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
您在注释中看到的,这是不可能的。但是您可以进行非常粗略的解决方法。
创建一个在打开工作簿时运行的子。该子将包含您要再次运行的代码。但是子的第一步应该检查一些参数,因此每次打开它时都不会运行,而只能在重新启动时运行。该参数可以是在关闭工作簿之前将其放置在某个单元格中的值。
。现在唯一的问题是一旦关闭工作簿,如何打开它。您可以创建一个Helper Excel工作簿,还可以使用打开工作簿时运行的子。Sub唯一要做的就是设置计时器,并且在等待期之后,它将打开您要重新启动的工作簿。您需要打开辅助工作簿,然后再关闭另一个工作簿。
这应该为您带来所需的东西。当然,您可以发布它,但是出于您的目的(例如每周报告)应该很好。