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

时间:2013-04-30 13:47:07

标签: excel vba excel-vba

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

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

4 个答案:

答案 0 :(得分:19)

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

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

答案 1 :(得分:11)

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

答案 2 :(得分:7)

这里打开vba的另一种方式

  

<强> Start Excel Application > Go to File > Recent >

enter image description here

按住Shift键并双击打开 -

这样做可以防止 Workbook_Open 事件触发,并且 Auto_Open 宏无法运行。

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

  

VBA 使用 Application.EnableEvents property (Excel)

答案 3 :(得分:2)

Application.EnableEvents 和特定于Workbook的Application.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