gpt4 book ai didi

vba - 未输入 VBA 密码宏/VBA 无法运行

转载 作者:行者123 更新时间:2023-12-02 20:18:22 32 4
gpt4 key购买 nike

我有一个具有密码保护(防止未经授权访问宏)的 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 代码,他们只需要运行宏。

期待一个简单的答案!

最佳答案

我没明白这一点,但有两点:

1./如果您想使用密码保护所有代码(如果尚未完成):

在您的 vba 编辑器中:

Tools > VBAProject Properties > Protection

2./那么事实是 sample() 会在您使用时为用户(没有密码)和代码锁定工作表:

ActiveSheet.Protect Password:="xyz", DrawingObjects:=True, Contents:=True,  Scenarios:=True

如果您想让代码不受限制地访问工作表,但希望工作表受密码保护(防止用户访问),您可以使用:

UserInterFaceOnly:=True

像这样:

ActiveSheet.Protect Password:="xyz", DrawingObjects:=True, _
Contents:=True, Scenarios:=True, UserInterFaceOnly:=True

因此您的代码可以访问所有内容,但用户仍然需要密码才能编辑工作表。

不知道是不是你需要的,希望是。如果没有,你可以考虑稍微重新表述一下你的问题

关于vba - 未输入 VBA 密码宏/VBA 无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24820902/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com