【问题标题】:Sheet protection: UserInterFaceOnly gone工作表保护:UserInterFaceOnly 消失了
【发布时间】:2016-07-13 13:56:03
【问题描述】:

在 VBA Excel 中,如果我在关闭并再次打开文件后使用 UserInterFaceOnly:=True 选项保护工作表,UserInterFaceOnly 模式将不可用,只有密码保护。

代码:ActiveSheet.Protect Password:="myPassword", UserInterfaceOnly:=True

为什么?

【问题讨论】:

  • 就是这样。您必须在 Open 事件中重置它。

标签: vba excel excel-2010 password-protection


【解决方案1】:

在重新打开工作簿后,如果不重新应用 UserInterfaceOnly:=True,您将无法执行此操作。取自 Excel 的 Vb protect 方法参考:

如果在将 UserInterfaceOnly 参数设置为 true 的情况下应用此方法,然后保存工作簿,则在重新打开工作簿时,整个工作表(不仅仅是界面)将受到完全保护。要在打开工作簿后重新启用用户界面保护,您必须再次应用此方法,并将 UserInterfaceOnly 设置为 true

现在,如果您担心这需要太长时间(如您所说,15 秒),请查看this Code Review 答案。我已经在几本复杂程度不同的工作簿中做到了这一点,在我尝试过的所有版本(包括 2010 年)中,重新应用保护的时间都可以忽略不计。

【讨论】:

    【解决方案2】:

    我不确定导致该问题的原因是什么,但您可以通过在 Workbook_Open() 事件中添加保护代码来规避它,将每个工作表保护重置为在每个工作表中都有 UserInterfaceOnly:=True

    【讨论】:

    • Excel文件有15张,每次做保护需要10秒,太长了。我已经对此进行了试验。
    • @Pwi 10 秒 15 张???如果您所做的只是切换保护,我看不出要花那么长时间。我只是自己测试了它,它基本上是瞬时的。是否还有其他事情可能会减慢速度?
    • 我尝试使用完全空的工作簿。试试这个代码:code: For Each Sh In Worksheets Sh.Protect Password:="passw", UserInterFaceOnly:=True Next sh /code
    • 在 Excel 2013 及更高版本中,密码算法已更改,并且比以前慢了很多。
    • @RGA 运行 2010 年始终是 IMO 的一件好事。仍然是最好的版本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多