2017-10-18 84 views
0

我正在使用Excel中的幾個VBA宏來處理項目。有沒有辦法確保VBA宏在通過宏打開時不會從其他Excel工作簿啓動?從其他Excel工作表中禁用宏

例如,假設我有一個工作簿中宏來打開一些其他的Excel文件:

Sheets("Sheet1").Select 
PathName = Range("D3").Value 
Filename = Range("D4").Value 
TabName = Range("D5").Value 
ControlFile = ActiveWorkbook.Name 
Workbooks.Open Filename:=PathName &; Filename 

什麼,我通常做的是包括Application.EnableEvents = False的子程序,以確保我不是在打開其他工作簿時觸發代碼。這也是該先前的SO post所建議的方法。

但兩個問題浮現在腦海中:

  1. 這是 「安全」?用戶是否可以通過其他方式編寫自己的宏,這些宏在我的活動應用程序上執行,即使我禁用了事件?

  2. 除了完全禁用事件之外是否還有其他解決方法?這看起來似乎有些限制,幾乎「把嬰兒潑出去」。

+0

使用SQL從表中獲取數據 – jsotola

回答

1

這似乎打開沒有宏的文件,它是隻讀的。 當測試這一點,我甚至不能看到在VBA編輯器中打開的文件的宏模塊..

Application.AutomationSecurity = msoAutomationSecurityForceDisable 
Workbooks.Open Filename:=strFilepath & strFilename, ReadOnly:=True 
Application.AutomationSecurity = msoAutomationSecurityByUI 
相關問題