【发布时间】:2014-09-09 08:23:28
【问题描述】:
我有一个按预期运行的带有密码保护(防止未经授权访问宏)的 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 代码在工作表中,而不是一个单独的模块?还是我完全错了?