Я получаю сообщения об ошибках нехватки ресурсов в 32-разрядной версии Excel 365 (64-разрядная версия устраняет проблему, но наши ИТ-специалисты не допустят ее для такого количества пользователей, которые будут пользоваться этой книгой, поэтому я застрял на 32-разрядной версии) . У меня много оперативной памяти, поэтому я пытаюсь разделить две книги на разные экземпляры, чтобы выделить больше памяти (если это плохая стратегия, я был бы рад узнать, почему/альтернативы!).
В моей настройке есть две книги: рабочая книга A открывает рабочую книгу B, а рабочая книга B запускает тяжелый код, а затем передает данные обратно в рабочую книгу A в формате значения.
Экземпляр Excel 1: рабочая книга A
Экземпляр Excel 2: рабочая книга B
Я хочу, чтобы WkbA (открытый в экземпляре Excel 1) вызывал макрос для WrkB, открытого в экземпляре Excel 2. Я написал код ниже, чтобы попробовать это.
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"
В строке «Конец с» код открывает WkbA и WrkB в двух отдельных экземплярах Excel, как я хочу.
Экземпляр Excel 1: WrkA
Экземпляр Excel 2: WrkB
Но в строке Application.Run Excel снова открывает WrkB в экземпляре 1.
Экземпляр Excel 1: WrkA и WrkB
Экземпляр Excel 2: WrkB
Вместо вызова основной подпрограммы в экземпляре 2 WorkbookB.
Изменять
Application.Run "'WkbB.xlsm'!Main"
к
WrkB.Run "'WorkbookB.xlsm'!Main"
Вот оно! Спасибо! Люблю простые ответы :)
Когда вы говорите «ссылка», вы имеете в виду формулы Excel или код VBA? Формула WrkB не ссылается на WrkA, если вы можете привести примеры, я был бы рад попытаться удалить все ссылки и посмотреть, исправит ли это это.