防止 sheet 在工作簿中打开

Protect a sheet from opening within a workbook

我有一个包含多个 sheet 的 excel 工作簿。有什么方法可以通过密码保护用户甚至不在工作簿中打开 sheet 吗? sheet 上面有一个很大的图表,我不希望每个人都能看到,更不用说编辑了。

在此先感谢您的帮助

编辑

我使用以下代码允许用户单击表单控件按钮来访问有问题的 sheet。

Sub ShowHeatMap()
 Dim S As String
 S = InputBox("Enter Password")
 If S = vbNullString Then
     Exit Sub
 ElseIf S <> "wiretransfer" Then
     Exit Sub
 Else
     Worksheets("Training Heat Map").Visible = xlSheetVisible
 End If
End Sub

这与我添加到工作簿的一种 "homepage" sheet 上的按钮相关联。

但是当您再次打开工作簿时,我无法让 sheet 保持隐藏状态。我试过这段代码:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
 ThisWorkbook.Worksheets("Training Heat Map").Visible = xlSheetVeryHidden
End Sub

有什么想法吗?此代码在通用声明

下的 sheet 模块中输入

通过 this answer,我认为这可能对您有用。在 VBA 内,将其放入 ThisWorkbook:

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim MySheets As String, Response As String
MySheet = "Sheet1"
If ActiveSheet.Name = MySheet Then
ActiveSheet.Visible = False
    Response = InputBox("Enter password to view sheet")
        If Response = "MyPass" Then
            Sheets(MySheet).Visible = True
            Application.EnableEvents = False
            Sheets(MySheet).Select
            Application.EnableEvents = True
        End If
End If
Sheets(MySheet).Visible = True
End Sub

显然需要根据您的需要进行一些调整。请记住,您还需要用密码保护您的 VBA 代码,否则任何人都可以查看它并找出密码。