从VBA打开工作簿并禁用Workbook_Open()代码?

我正在打开使用VBA的电子表格,并且一些工作簿包含在调用Workbook_Open()时开始执行的代码。

如何使用VBA打开工作簿但停止自动执行代码? 我只打开工作簿来查看工作表中的公式 – 我不想执行任何代码。

您是否想在VBA中打开工作簿之前尝试禁用事件,然后重新启用它们以用于模块的其余部分? 尝试使用这样的东西:

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

这里用另一种方式打开vba

Start Excel Application > Go to File > Recent >

在这里输入图像说明

按住Shift键并双击打开 –

这样做将防止Workbook_Open事件触发并且Auto_Openmacros正在运行。

或者按住shift键并双击打开工作簿。

我不知道为什么这在其他答案中没有明确提到,但我发现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 

即使代码运行后,设置也不会恢复到默认行为,因此您需要再次进行更改。 因此对于这个问题

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

Application.EnableEvents和工作簿特定的Application.EnableEvents的组合很好。 任何时候重新引用工作簿(如复制单元格),都会重新触发激活事件。 工作簿必须先退出,closures后无法访问,请尝试以下操作:

 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