【问题标题】:Give macro access to protected sheets授予对受保护工作表的宏访问权限
【发布时间】:2016-07-11 15:14:20
【问题描述】:

我有一个使用 VBA 在 MS Excel 中构建的应用程序。我最初通过密码保护了一些工作表和 VBA 项目。我的用户只能在特定工作表中的特定单元格上输入和使用下拉菜单。为了让我的 VBA 修改受保护的工作表,我必须取消保护工作表,然后使用密码重新保护它们。

项目的要求现在已经改变,现在要求我不要在代码中使用硬编码字符串来保护和取消保护工作表。

下面是我的 VBA 代码中发生的事情的代码示例。

Worksheets("Loading").Unprotect ("****")
[Functional Code]
Worksheets("Loading").Protect ("****")

考虑到我必须有密码才能访问 VBA 项目,有没有办法让项目与受保护的工作表进行交互,就好像它们没有受到保护一样?

如果没有。是否有另一种方法可以在不禁止 VBA 交互的情况下防止用户与工作表交互(非常隐藏对用户仍然需要查看工作表不起作用)。

旁注:这需要防止技术技能最低的普通人以他们不应该的方式更改床单

【问题讨论】:

    标签: vba excel security


    【解决方案1】:

    在未受保护的工作表上使用,

    Worksheets("Loading").Protect Password:=****, UserInterfaceOnly:=True
    

    详情请参阅Worksheet.Protect method。使用此额外参数设置并保存工作簿后,任何 VBA 代码都将绕过保护,但仍保留用于用户交互。

    【讨论】:

    • 当我重新打开我的工作簿时,UserInterfaceOnly 设置为 false。我将如何将其设置为 true 而无需重新运行 .Protect
    • 我的解释可能很简洁。我的目的是向您介绍 UserInterfaceOnly 参数。您仍然需要使用密码设置保护并保存工作簿。
    • 问题是我不能使用Worksheets("Loading").Protect Password:=****, UserInterfaceOnly:=True,因为它仍然需要我在代码中输入密码。每次打开工作簿时都需要设置UserInterfaceOnly,需要密码才能设置。
    • >您应该知道,如果您将 UserInterfaceOnly 参数设置为 True 的 Protect 应用于工作表,然后保存并关闭工作簿,则当您重新打开工作簿时,整个工作表将受到完全保护,但不再应用界面保护。这意味着要重新启用用户界面保护,您必须在每次打开工作簿时再次应用将 UserInterfaceOnly 设置为 True 的 Protect 方法。 (取自excel-it.com/excel_userinterfaceonly.html
    猜你喜欢
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-10
    • 1970-01-01
    相关资源
    最近更新 更多