是否可以隐藏"标签选择工具"?

时间:2014-11-09 12:11:41

标签: excel vba

我的目标是用密码保护工作表。

因此,当用户打开工作簿时,我希望除了一个之外的所有工作表都将被隐藏(非常隐藏)。当用户输入密码时,所有工作表都将可见。如何使用vba代码隐藏和显示大量工作表,是否有任何简单的技巧?我的意思是可以隐藏"标签选择工具"?

1 个答案:

答案 0 :(得分:1)

之前,我要指出Excel文件的安全性如何:

  1. 您的代码将成为文件XML的一部分,因此检查基础数据,任何想要查找如何获取密码的人都可以。
  2. 现在您已经收到警告,此处必须包含您在工作簿中打开事件的代码。它将隐藏所有内容(以防止在关闭书籍时可以看到工作表的情况),然后询问密码。

    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文件并不是出人意料的安全。

相关问题