防止在另一个工作簿上从VBA取消隐藏工作表

我有一个excel工作簿报告,由5人查看。 这份报告有10张,其中9张使用Sheets("Sheet2-10").Visible = xlVeryHidden隐藏Sheets("Sheet2-10").Visible = xlVeryHidden

但是,我的工作表是不安全的,因为人们可以通过使用Sheets("Sheet2-10").Visible = true来取消隐藏工作表2到10, Sheets("Sheet2-10").Visible = true (例如从另一个工作簿中调用)。

如何保护我的工作表免受试图做这件事的人?

这并不能完全解决您的问题,但作为参考,Excel允许您以引号开头,后跟撇号,然后是字母或其他任何内容。 所以你可以有一张名为“Sheet1”的Worksheets(""'Sheet1").Visible如果你尝试了Worksheets(""'Sheet1").Visible ,你会得到一个编译器错误。 用户仍然可以通过索引号来调用它。

我觉得这很容易。 你只需要用密码保护你的VBA代码:

保护VBA代码

有了这个保护,没有人可以看到Microsoft Excel对象 。 所以现在,你只需要改变你非常隐藏的工作表名称到一个糟糕的名字 – 散列名称。 像Sheets("FFJAR31GMCJ4ASAL8PYXXFE")

为了让您更容易编写代码,您可以在常量中设置工作表的名称。

例:

 Const MY_HIDDEN_SHEET As String = "FFJAR31GMCJ4ASAL8PYXXFE" Sub f() MsgBox "My hidden sheet name is " & MY_HIDDEN_SHEET End Sub 

只保护你的工作簿结构:

在这里输入图像描述