У меня есть рабочая книга для создания 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"
Если что-то не совсем понятно, просто скажу, что я делаю это лучше написано.
Вы хотите многопоточность, которая, к сожалению, невозможна в VBA. –
Возможный дубликат [Многопоточность в VBA] (http://stackoverflow.com/questions/5721564/multi-threading-in-vba) –
каждая рабочая книга открывается в другом экземпляре, мне просто нужно сделать «RUN», в каждом из них без использования ручного режима (откройте каждую книгу и выполните ее макрос). – Rajivdmo