Excel:如何为不同的人提供各种级别的保护和访问

时间:2015-08-05 19:49:15

标签: excel vba excel-vba passwords password-protection

我有一个excel电子表格,有3种不同类型的人可以访问,我希望这3种类型的人拥有不同的访问权限。我想要有完全访问权限的人,所以可以更改工作簿,更改单元格,更改单元格的内容和格式等等。有人可以访问,所以只能更改一些单元格,可以继续电子表格访问时可见的工作表,我希望有访问权限受限的人只能访问某些工作表,更改检索与该值关联的数据所需的单元格,并且无法保存文件

有没有办法做到这一点?

我真正想要的是当文件打开以询问用户密码时,并且根据密码的不同,锁定不同的单元格并应用不同的访问级别。

1 个答案:

答案 0 :(得分:1)

首先使用指示如何处理它们的后缀为您要保护的区域指定命名范围。您可以通过选择范围并键入不是公式栏左侧的有效单元格地址的名称来执行此操作。

enter image description here

我创建了名为Someting_4U的范围,您和我可以编辑,Something_4Me,我只能编辑

现在复制主 ThisWorkbook 模块中的以下代码

enter image description here

Private Sub Workbook_Open()
    Dim Sht As Worksheet, Nm As Name

'取消保护您的工作簿和工作表

    ThisWorkbook.Unprotect "onlyVbaPassWord"
    For Each Sht In ThisWorkbook.Sheets
        Sht.Unprotect "onlyVbaPassWord"
    Next Sht

'取消保护适当的命名范围并保护其他范围

    For Each Nm In ThisWorkbook.Names

        ' The next `Select Case` statement implements your business logic
        Select Case Application.UserName
            Case "Me", "Myself", "I"
                Nm.RefersToRange.Locked = False
            Case "You", "Yourself", "Thou"
                If Nm.Name Like "*_4U" Then
                    Nm.RefersToRange.Locked = False
                Else
                    Nm.RefersToRange.Locked = True
                End If
            Case Else
                Nm.RefersToRange.Locked = True
        End Select
    Next Nm

'再次保护您的工作表和工作簿

    For Each Sht In ThisWorkbook.Sheets
        Sht.Protect "onlyVbaPassWord"
    Next Sht
    ThisWorkbook.Protect "onlyVbaPassWord"
End Sub