我希望你可以關注這個。問題在最後。異步調用dll
我有一個Excel 2003工作簿,其中包含一個將在DOE(實驗設計)中使用的值表。此工作表(通過Workbook.Open
)加載另一個工作簿並填充正確的字段,然後在第二個工作簿中(通過Application.Run("backend.xla!calc")
)運行計算。
反過來,計算調用外部.dll
(編譯富通),並等待它完成(通過Declare Sub Calculate Lib "fortran.dll" (args)
)。每次運行需要4分鐘。每個DOE可能有7到21次運行。最後,在第一個工作簿中將鍵值拉回來顯示結果。
請幫助我想辦法創建第二個工作簿的多個副本,並讓他們每個計算(調用相同的DLL,具有不同的參數)在同一時間(不同的Excel過程),以優化一個四核處理器更好。
或者可能是某種方式異步直接調用外部函數。我知道Excel 2003 VBA是單線程的,並且外部的dll只能用作單例(我不確定)。
PS。隨意在一個說,我幾乎堅持序列風格計算的鐘聲。它好,我可以接受。
有趣。當我嘗試用xl.Run進行計算時,線程會等待,直到它完成,然後才能繼續,因此無法同時運行多個計算。 – ja72 2011-01-13 16:17:28