Вызов макроса Excel в конкретном экземпляре Excel в VBA - PullRequest
0 голосов
/ 29 мая 2019

Я получаю ошибки из-за недостатка ресурсов в 32-разрядной версии Excel 365 (64-разрядная версия решает проблему, но наши ИТ-специалисты не разрешают ее для числа пользователей, которые будут использовать эту книгу, поэтому я застрял с 32-немного).У меня много оперативной памяти, поэтому я пытаюсь разделить две книги на разные экземпляры, чтобы увеличить выделение памяти (если это плохая стратегия, я буду рад узнать, почему / альтернативы!).

В моей установке есть две рабочие книги: рабочая книга A открывает рабочую книгу B, а рабочая книга B выполняет код тяжелой работы, а затем передает данные обратно в рабочую книгу A в формате значений.

Экземпляр Excel 1: рабочая книга A

Экземпляр Excel 2: Рабочая книга B

Я хочу, чтобы WkbA (открыт в экземпляре Excel 1) вызывал макрос в WrkB, открытый в экземпляре Excel2. Я написал код ниже, чтобы попробовать это.

Dim WkbB As Object
Set WkbB = New Excel.Application
With WkbB
    .Visible = True
    .Workbooks.Open "P:\Root\WorkbookB.xlsm", True, False
End With

Application.Run "'WkbB.xlsm'!Main"

В строке 'End With' код открывает WkbA и WrkB в двух отдельных экземплярах Excel, как я хочу

Экземпляр Excel1: WrkA

Экземпляр Excel 2: WrkB

Но в строке Application.Run Excel снова открывает WrkB в экземпляре 1

Экземпляр Excel 1: WrkA & WrkB

Экземпляр Excel 2: WrkB

Вместо вызова основной подпрограммы в книге экземпляров 2B.

1 Ответ

2 голосов
/ 29 мая 2019

Изменение

Application.Run "'WkbB.xlsm'!Main"

до

WrkB.Run "'WorkbookB.xlsm'!Main"
...