Excel保护和取消保护工作簿VBA

我有一个工作簿,其中包含几个(查找)选项卡,我不希望任何用户能够取消隐藏。 但是,有一个包含pipe理员信息的选项卡,我希望pipe理员用户能够看到。 我有一个button和macros,在取消隐藏此选项卡之前提示inputpipe理员密码,但是如果我保护工作簿结构(以便其他用户无法访问隐藏的选项卡),vba将失败。 有没有办法保护/解除pipe理macros内的工作簿? 我已经尝试了ActiveWorkbook.UnprotectActiveWorkbook.ProtectActiveWorkbook.ProtectStructure各种组合,无论在pipe理macros和WorkbookOpen中都无济于事。 我最常遇到的错误消息是“无法分配给只读属性”,即使在我的代码顶部有ActiveWorkbook.Unprotect 。 有谁知道如何解决这个问题? 我真的不想在pipe理工作表本身的第二个密码的情况下不要打开所有的标签,这是笨拙的!

不是保护整个工作簿,而是将要隐藏的工作表的Visible属性设置为xlSheetVeryHidden – 您可以在VBA编辑器的属性窗口中手动执行此操作。 现在这些工作表不会显示在Unhide…对话框中。 您的macros可以将xlSheetVeryHiddenpipe理员工作表的可见性交换为xlSheetVisible然后返回。

本身并不能保护你的工作簿,而不会让用户知道如何访问VBA编辑器和属性,但是如果你需要这样做的话,快速的网页search似乎有很多答案 – 这可能取决于你的版本的Excel。