防止 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 代码,否则任何人都可以查看它并找出密码。
我有一个包含多个 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 代码,否则任何人都可以查看它并找出密码。