2017-02-16 12 views
0

3つのExcelインスタンスを作成し、それぞれを実行するためのワークブックを作成しました。私はそれを複数のコアを使ってパフォーマンスを向上させるために作ります。私は別の範囲で苦労せずにそれを実行しようとしています。コードVBAで複数の関数を同時に実行する方法

Sub Initiate() 
Dim spath2 As String 
Dim spath3 As String 
Dim xlApp As Application 
Dim xlFFQ1 As Application 
Dim xlFFQ2 As Application 
Dim xlFFQ3 As Application 


Application.ScreenUpdating = False 
Application.DisplayAlerts = False 

spath1 = ThisWorkbook.Path & "\program1.xlsm" 
spath2 = ThisWorkbook.Path & "\program2.xlsm" 
spath3 = ThisWorkbook.Path & "\program3.xlsm" 

Set xlApp1 = CreateObject("Excel.Application") 
Set xlApp2 = CreateObject("Excel.Application") 
Set xlApp3 = CreateObject("Excel.Application") 

xlApp1.Workbooks.Open (spath1) 
xlApp2.Workbooks.Open (spath2) 
xlApp3.Workbooks.Open (spath3) 


'those lines are independents and want to run each one without waiting the end of another. xlApp1/xlApp2/xlApp3 are different excel instances 
xlApp1.Run "doMyStuffs" 
xlApp2.Run "doMyStuffs" 
xlApp3.Run "doMyStuffs" 

例何かが非常に明確ではない場合、私はそれがより良い書かせることばかり言います。

+1

マルチスレッドが必要ですが、残念ながらVBAでは不可能です。 –

+2

[VBAのマルチスレッド]の可能な複製(http://stackoverflow.com/questions/5721564/multi-threading-in-vba) –

+0

各ワークブックは別のインスタンスで開きます。 "RUN"それぞれを手動モードを使用せずに(各ブックを開いてマクロを実行する)。 – Rajivdmo

答えて

0

私は、インスタンススケジューラをインスタンスのスターターとして使用しました。詳細情報here

関連する問題