我的目标是用密码保护工作表。
因此,当用户打开工作簿时,我希望除了一个之外的所有工作表都将被隐藏(非常隐藏)。当用户输入密码时,所有工作表都将可见。如何使用vba代码隐藏和显示大量工作表,是否有任何简单的技巧?我的意思是可以隐藏"标签选择工具"?
答案 0 :(得分:1)
之前,我要指出Excel文件的安全性如何:
现在您已经收到警告,此处必须包含您在工作簿中打开事件的代码。它将隐藏所有内容(以防止在关闭书籍时可以看到工作表的情况),然后询问密码。
Public Sub UnlockSheets()
' 1 - hide every sheet, except the desired one
Dim aWorksheet As Worksheet
For Each aWorksheet In ActiveWorkbook.Worksheets
If aWorksheet.Name <> "desired sheet name" Then
aWorksheet.Visible = xlVeryHidden
Next
' 2 - ask for the password
Dim userPassword As String
userPassword = InputBox("Please enter your password")
If userPassword = "my_password" Then
RevealSheets
Else
MsgBox "Wrong password!", vbCritical
Application.DisplayAlerts = False
ActiveWorkbook.Close False
End If
End Sub
Public Sub RevealSheets()
'3 - Hide all the sheets
Dim aWorksheet As Worksheet
For Each aWorksheet In ActiveWorkbook.Worksheets
aWorksheet.Visible = xlSheetVisible
Next
End Sub
这里的另一个问题是用户可以通过按住SHIFT键来停止所有宏(如果我没记错的话)。不用说......它不太安全。再说一次,Excel文件并不是出人意料的安全。