繁体   English   中英

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

[英]Open a workbook from VBA and disable Workbook_Open() code?

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

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

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

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

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

这里有另一种打开vba的方法

Start Excel Application > Go to File > Recent >

在此输入图像描述

按住Shift键并双击打开 -

执行此操作将阻止触发Workbook_Open事件并运行Auto_Open宏。

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


对于VBA使用Application.EnableEvents属性(Excel)

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

打开一个空的excel宏文件,放一个Application.EnableEvents = False的宏,然后打开文件。 之后做 Application.EnableEvents = True。

将 xlapp 调暗为新的 Excel.Application

将 wb 调暗为工作簿

xlapp.EnableEvents = 假

Set wb = xlapp.Workbooks.Open("我的工作簿名称")

'处理工作簿

wb.Close 保存更改:= false

xlapp.退出

设置 wb = 无

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM