从精明的用户保护Excel工作表数据

时间:2013-06-16 21:35:14

标签: excel vba excel-vba

我正在创建一个将分发给我的同事的excel应用程序。基于权限我需要禁用对某些工作表和功能的访问权限。我已经能够保护和隐藏工作表,但精明的用户可以在内部或外部迭代隐藏的工作表来公开数据。我需要阻止它。

以下是流程:

当工作簿打开对远程数据库的查询时,返回用户权限集。然后将这些权限打印到名为“PERMISSIONS”的工作表。

enter image description here

下面的代码迭代工作表权限,通过传入列名来查找特定设置。

CheckPerm "Timesheet"

Public Function CheckPerm(nPermColTarget As String) As Boolean
Dim Counter As Integer
Dim x As Integer
Dim y As Integer

    Counter = 3
      Do Until Sheet7.Cells(Counter, 1).Value = Associate_Name
        Counter = Counter + 1
      Loop
    y = Counter

    Counter = 2
      Do Until Sheet7.Cells(2, Counter).Value = nPermColTarget
        Counter = Counter + 1
      Loop
    x = Counter

   If Sheet7.Cells(y, x).Value = "ON" Then
      CheckPerm = True
      GrntDenySheetAccess nPermColTarget, y, x, CheckPerm
   Else
   ' "OFF"
      CheckPerm = False
      GrntDenySheetAccess nPermColTarget, y, x, CheckPerm
   End If
End Function


Private Sub GrntDenySheetAccess(nPermColTarget As String, y As Integer, _ 
x As Integer, CheckPerm As Boolean)

Select Case nPermColTarget

   ' Sheet1
    Case "Timesheet"

       If CheckPerm = True Then
          Sheet1.Unprotect "pass"
          Sheet1.Visible = xlSheetVisible
       End If

       If CheckPerm = False Then
          Sheet1.Protect "pass"
          Sheet1.Visible = xlSheetVeryHidden
       End If

 End Select

End Sub

但即使sheet1被隐藏和保护,我仍然可以迭代隐藏的sheet1的内容来访问信息。无论如何要阻止它?

由于

1 个答案:

答案 0 :(得分:3)

没有任何方法可以安全地保护对Excel工作簿中任何内容的访问。在Excel 2007及更高版本中,密码更难破解,但用户只需将工作簿保存为.xls文件,然后就可以轻松破解。

你能做的最好的事情就是让某人有点难以进入。密码保护您的文件,并设置您不希望他们到达xlSheetVeryHidden的任何工作表,这将阻止用户通过Excel用户界面取消隐藏工作表。

您提出的评论者是正确的。如果您想要一个安全的应用程序,Excel就不是答案。

enter image description here

话虽如此,如果您在数据库层中强制执行安全性,Excel会创建一个很棒的UI。只需确保您不存储或检索用户不应看到的数据。