[英]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键并双击打开工作簿。
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.