我正在使用VBA打开电子表格,其中一些工作簿包含在调用Workbook_Open()时开始执行的代码。
如何使用VBA打开工作簿,但停止自动执行代码? 我只是打开工作簿来查看工作表中的公式 - 我不想执行任何代码。
你是否想在VBA中打开工作簿之前尝试禁用事件,然后在模块的其余部分重新启用它们?可以尝试使用以下类似于此的方法:
Application.EnableEvents = False 'disable Events
workbooks.Open "WORKBOOKPATH" 'open workbook in question
Application.EnableEvents = True 'enable Events
Application.AutomationSecurity
。 - Tim Williams我不知道为什么其他答案中没有清楚地提到这一点,但我发现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打开Excel的方法:
打开Excel应用程序 > 点击“文件” > “最近文档” >
按住Shift键并双击即可打开 -
这样做可以防止Workbook_Open
事件的触发和Auto_Open
宏的运行。
或者按住Shift键并双击以打开工作簿。
使用
VBA
处理时,可以使用Application.EnableEvents属性 (Excel)
结合使用 Application.EnableEvents 和工作簿特定的 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。
Dim xlapp as New Excel.Application
Dim wb as Workbook
xlapp.EnableEvents = False
Set wb = xlapp.Workbooks.Open("My workbook name")
'Process the workbook
wb.Close savechanges := false
xlapp.Quit
set wb = nothing