2017-02-16 2 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: