簡體   English   中英

有沒有一種方法可以在運行時關閉並打開VBA宏,然后再次開始運行?

[英]Is there a way to close and open a VBA macro while running and start running again?

我有一個VBA宏,可使用API​​打開ETABS,但命令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

正如您在評論中看到的那樣,這是不可能的。 但是您可以做一個非常粗略的解決方法。

創建一個在工作簿打開時運行的子。 該子項將包含您要再次運行的代碼。 但是該子程序的第一步應該是檢查某些參數,因此它不會在每次打開時都運行,而只會在重新啟動時運行。 例如,該參數可以是關閉工作簿之前放置在某個單元格中的值。

現在唯一的問題是如何在關閉工作簿后將其打開。 您可以創建一個助手Excel工作簿,還可以創建一個在工作簿打開時運行的子程序。 子項唯一要做的就是設置一個計時器,在等待時間之后,它將打開您要重新啟動的工作簿。 您需要先打開助手工作簿,然后再關閉另一本。

這應該為您提供所需的東西。 當然,您可以發布任何內容,但是出於您的目的(例如每周報告)應該沒問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM