2013-04-30 235 views
8

我使用VBA打開電子表格,並且一些工作簿包含在調用Workbook_Open()時開始執行的代碼。從VBA打開工作簿並禁用Workbook_Open()代碼?

我怎樣才能打開工作簿使用VBA,但自動停止代碼執行?我只打開工作簿查看工作表中的公式 - 我不想執行任何代碼。

+0

您可以隨時設置您的宏安全性來阻止所有的宏。這可能不理想,但應該做你所問的。 – Gaffi 2013-04-30 13:49:08

回答

10

你想嘗試禁用的活動您在VBA打開工作簿之前,然後重新啓用他們模塊的休息嗎?嘗試使用這樣的事情:

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

如果這不起作用,另一種解決此問題的方法是在模塊中聲明全局布爾值,並在需要或不需要運行Workbook_Open()代碼時將其設置爲true或false。您將不得不添加If()語句來檢查Workbook_Open()子項中的布爾值。 – dnLL 2013-04-30 14:09:43

+1

或者使用'Application.AutomationSecurity'進行研究' – 2013-04-30 15:02:04

+0

我認爲這些宏仍然啓用,並且可以在EnableEvents重新啓用後觸發。 – Tuntable 2017-12-04 01:52:41

0

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 
+2

沒有「工作簿特定Application.EnableEvents」這樣的事情。 wb.Application =應用程序 – MGM 2016-05-12 20:13:24

5

這裏的另一種方式與開出VBA

Start Excel Application > Go to File > Recent >

enter image description here

按住Shift鍵並雙擊開 -

這樣做會阻止發射的Workbook_Open事件,並從運行Auto_Open宏。

或按住Shift鍵並雙擊打開工作簿。

+0

他詢問有關從VBA代碼打開的問題。更難的問題。 – Tuntable 2017-12-04 01:49:48

3

我不知道爲什麼,這不是明明在其他的答案中提到,但我發現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 

即使代碼運行後,設置也不會恢復爲默認行爲,因此您需要再次更改它。因此對於這個問題

Application.AutomationSecurity = msoAutomationSecurityForceDisable 
' Your code 
Application.AutomationSecurity = msoAutomationSecurityByUI 
相關問題