Откройте книгу из VBA и отключите код Workbook_Open()?

Я открываю электронные таблицы, используя VBA, и в нескольких книгах содержится код, который запускается при вызове Workbook_Open().

Как открыть книги с помощью VBA, но остановить автоматический запуск кода? Я только открываю книги, чтобы посмотреть на формулы на листе - я не хочу выполнять код.

Ответ 1

Вы хотите попробовать отключить события перед тем, как открыть книгу в VBA, а затем повторно включить их для остальной части модуля? Попробуйте использовать что-то вроде этого:

Application.EnableEvents = False   'disable Events
workbooks.Open "WORKBOOKPATH"      'open workbook in question
Application.EnableEvents = True    'enable Events

Ответ 2

Я не знаю, почему это не было четко упомянуто в других ответах, но я обнаружил, что Application.AutomationSecurity делает именно то, что требовалось. В принципе

Application.AutomationSecurity = msoAutomationSecurityByUI
'This is the default behavior where each time it would ask me whether I want to enable or disable macros

Application.AutomationSecurity = msoAutomationSecurityForceDisable
'This would disable all macros in newly opened files

Application.AutomationSecurity = msoAutomationSecurityLow
'This would enable all macros in newly opened files

Даже после запуска кода настройки не вернутся к поведению по умолчанию, поэтому вам нужно изменить его снова. Таким образом, для этого вопроса

previousSecurity = Application.AutomationSecurity
Application.AutomationSecurity = msoAutomationSecurityForceDisable
' Your code
Application.AutomationSecurity = previousSecurity

Ответ 3

Здесь еще один способ открыть без VBA

Start Excel Application > Go to File > Recent >

enter image description here

Удерживайте клавишу Shift и дважды щелкните, чтобы открыть -

Это предотвратит запуск события Workbook_Open и Auto_Open макроса Auto_Open.

Или удерживайте клавишу Shift и дважды щелкните, чтобы открыть книгу.


Для работы VBA со свойством Application.EnableEvents(Excel)

Ответ 4

Комбинация Application.EnableEvents и специального приложения Workbook.EnableEvents отлично работает. Каждый раз, когда рабочая книга повторно ссылается (например, копирование ячеек), она перезапускает активирующие события. Рабочая книга должна сначала выйти, и после закрытия ее можно получить доступ, поэтому попробуйте следующее:

Dim wb as Workbook
Application.EnableEvents = False
Set wb = workbooks.Open "YOURWORKBOOKPATH"
Application.EnableEvents = True
wb.Application.EnableEvents = False

**Code**

wb.Application.EnableEvents = True
wb.Close