防止在另一个工作簿上从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代码:
有了这个保护,没有人可以看到Microsoft Excel对象 。 所以现在,你只需要改变你非常隐藏的工作表名称到一个糟糕的名字 – 散列名称。 像Sheets("FFJAR31GMCJ4ASAL8PYXXFE")
为了让您更容易编写代码,您可以在常量中设置工作表的名称。
例:
Const MY_HIDDEN_SHEET As String = "FFJAR31GMCJ4ASAL8PYXXFE" Sub f() MsgBox "My hidden sheet name is " & MY_HIDDEN_SHEET End Sub
只保护你的工作簿结构: