是否有一种方法可以在运行并重新开始运行时关闭和打开VBA宏



我有一个使用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唯一要做的就是设置计时器,并且在等待期之后,它将打开您要重新启动的工作簿。您需要打开辅助工作簿,然后再关闭另一个工作簿。

这应该为您带来所需的东西。当然,您可以发布它,但是出于您的目的(例如每周报告)应该很好。

最新更新