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

时间:2014-01-09 08:54:25

标签: excel excel-vba vba

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

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

如何保护我的工作表免受试图执行此操作的人的影响?

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我认为这很容易。您只需要使用密码保护您的VBA代码:

Protecting VBA code

有了这种保护,没有人可以看到 Microsoft Excel对象。所以现在,您只需要将您的非常隐藏的工作表名称更改为一个糟糕的名称 - 哈希名称。比如Sheets("FFJAR31GMCJ4ASAL8PYXXFE")

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

示例:

Const MY_HIDDEN_SHEET As String = "FFJAR31GMCJ4ASAL8PYXXFE"

Sub f()
    MsgBox "My hidden sheet name is " & MY_HIDDEN_SHEET
End Sub

答案 2 :(得分:0)

保护您的工作簿结构:

enter image description here