2016-11-03 41 views
0

在工作中,我們有一個Excel VBA工具,我們定期使用它來生成報告。由於我們必須生成的報告數量衆多,運行時間可能會相當長。通常,我們在運行時減少的方式是將報告列表分成四個組,製作四份報告工具,然後使用副本1在服務器1上運行組1,在服務器2上使用副本2等組2運行,這樣他們都在同時運行。從VBA同時運行多個Excel實例?

想知道是否可以在一臺服務器上運行它們而不是四臺嗎?即讓VBA啓動一個工具,然後在另一個實例中啓動另一個工具,依此類推。看起來好像當我嘗試這樣做時,一次只能運行一次(雖然多個實例可以正常打開,所有工具都可以運行,但不會同時運行)。請告知我是否不清楚,謝謝!

+5

你基本上試圖實現多線程。 VBA(COM實際上)是單線程的。您可以*通過從VBScript啓動Excel實例來模擬* MT。 –

+0

另一個選擇是從'Workbook_Open'觸發報告生成,然後使用shell一堆實例。儘管VBScript可能更清潔。 – Comintern

+1

@ Mat'sMug - VBA,但不是COM。您可以在COM中使用[MTA](https://msdn.microsoft.com/en-us/library/windows/desktop/ms693421(v = vs.85).aspx),但VBA僅限於STA。 – Comintern

回答

1

如上面提到的,你需要開始4個獨立的Excel。請參見下面的鏈接,所有的細節。

https://blogs.office.com/2013/06/03/opening-workbooks-by-running-separate-instances-of-excel/

通常情況下,您可以通過在資源管理器或瀏覽他們要麼雙擊打開Excel電子表格給他們從Excel裏面使用這兩種方法中的任何一種都會導致電子表格在Excel的單個實例中打開

有關運行Excel的多個實例的其他詳細信息,請參閱下面的鏈接。

http://www.online-tech-tips.com/ms-office-tips/excel-open-a-new-instance/