[英]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.