Откройте книгу из 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