![](/img/trans.png)
[英]Excel VBA Workbook_Open does not work when Excel is already open
[英]Workbook_Open() does not work with Workbook Protection
我正在使用 Excel 2016 並將此代碼寫入 VBA 中的 ThisWorkbook object:
Private Sub Workbook_Open()
ThisWorkbook.Protect (password = "password")
End Sub
它不工作。 這里的要點是,這應該可以防止用戶接觸本工作簿中的 Power Query 函數。 我已將其保存為啟用宏的工作簿,我啟用了所有宏和事件,這是唯一打開的工作簿。
我還有這個附加代碼:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Protect (password = "password")
ThisWorkbook.Save
End Sub
那也行不通。 如果我將該“ThisWorkbook.Protect”代碼插入通用模塊或工作表 object 並手動運行它,它工作正常,但是當我希望這個特定的 excel 文件在打開或關閉時自動運行此代碼時,它不會這樣做。
任何想法可能是什么原因造成的?
出於某種原因,在受保護的工作簿上運行ThisWorkbook.Protect
似乎取消了它的保護(即使我找不到任何說明它這樣做的文檔)所以試試這個:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Not ThisWorkbook.ProtectStructure Then ThisWorkbook.Protect Password:="password"
ThisWorkbook.Save
End Sub
為了使自動運行的子例程在 Microsoft Excel 中正常工作,它們必須包含在 Visual Basic 模塊中。
如果 Auto_Open、Auto_Close 或其他自動運行的子例程存儲在工作表或 ThisWorkbook“后面”,則當您打開或關閉工作簿時,或者當您執行應導致子例程運行的操作時,它可能無法正確 function 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.