有没有办法在运行时关闭并打开VBA宏并再次开始运行?

时间:2017-12-04 17:14:29

标签: excel vba excel-vba

我有一个使用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

1 个答案:

答案 0 :(得分:0)

正如您在评论中看到的那样,这是不可能的。但是你可以做一个非常粗略的解决方法。

创建在打开工作簿时运行的子。此子将包含您要再次运行的代码。但是sub的第一步应该是检查一些参数,所以每次打开它时它都不会运行,而只是在重启时运行。例如,参数可以是某个单元格中的值,在关闭工作簿之前放在那里。

现在唯一的问题是如何在工作簿关闭后打开它。您可以创建一个帮助程序Excel工作簿,也可以创建在打开工作簿时运行的子工作簿。 sub做的唯一事情就是设置一个计时器,在等待期之后,它会打开你想要重启的工作簿。您需要在关闭另一个工作簿之前打开帮助工作簿。

这应该可以满足您的需求。当然,您无法发布任何内容,但出于您的目的(例如每周报告)应该没问题。