我有一個VBA宏,具有密碼保護功能(防止對宏進行未經授權的訪問),該宏按預期運行。用戶單擊按鈕,宏運行。內容或多或少:如果未輸入VBA密碼,宏/ VBA無法運行
Sub sample()
ActiveSheet.Unprotect Password:="xyz"
...VBA code....etc
ActiveSheet.Protect Password:="xyz", DrawingObjects:=True, Contents:=True, cenarios:=True
End Sub
現在我已經添加了一項功能,代碼如下:
Function
......etc
End Function
Sub sample()
ActiveSheet.Unprotect Password:="xyz"
...VBA code....etc
code referencing the function
ActiveSheet.Protect Password:="xyz", DrawingObjects:=True, Contents:=True, Scenarios:=True
End sub
如果打開工作簿,並打開VBA窗口和VBA密碼進入,該宏每次都運行良好。工作表密碼訪問正常工作。
但是,如果我以用戶身份重新打開工作簿,無法訪問VBA代碼,則在輸入VBA密碼之前,宏將不會運行。我猜測原因是該函數是子程序的「外部」,但是放入子程序內部不允許宏運行。我不想讓用戶訪問VBA代碼,他們只需要運行宏。
期待一個簡單的答案!
有一些我沒有得到:你說的密碼訪問VBA代碼(我們可以使用一個來鎖定所有的代碼),但在這裏看起來('ActiveSheet.Protect'),你只是保護工作表一個密碼。所以:你的意思是你用密碼保護工作表,並且vba代碼在工作表中,而不是一個單獨的模塊?還是我總是錯了? – smagnan