Excel中的行级安全性 – 我应该使用什么方法:

早上的人,

在过去的几天中,我一直在试图find一种在Excel中使用VBAmacros实现“伪”行级安全性的方法。 我需要的是根据Windows用户凭据来筛选我所有的Excel表格。 问题是,我不知道如何解决这个问题,这是我迄今为止唯一的想法:

1.Derive the NT account and store it in namedrange 2. Use autofilter based on NamedRange for each table in my spreadsheet 3. Delete / Hide the unnecessary rows ? 

例:

在这里输入图像说明

也许,还有其他更适合我的场景的方法,但是我还没有find它们。 如果你能把我指向正确的方向,我将不胜感激。

谢谢

这可以通过将以下内容粘贴到特定WorkBook VBA项目中的ThisWorkBook模块来实现。 只要记得将WorkBook保存为.dotm

正如J.Chomel所提到的,绕过WorkBook的密码并不是最难的事情,你可以在网上find一个macros。

显然你需要密码保护你的VBA项目,以防止用户从那里访问WorkBook的密码。

  Private Sub Workbook_Open() Dim CurrentUserName As String CurrentUserName = Environ("Username") Dim WorkBookPassword As String 'Replace password with your desired password WorkBookPassword = "password" Dim DataWS1 As Worksheet 'Replace Sheet1 with your specific sheet name Set DataWS1 = ThisWorkbook.Sheets("Sheet1") With DataWS1 .Unprotect WorkBookPassword If .AutoFilterMode Then .AutoFilterMode = False .UsedRange.AutoFilter Field:=3, Criteria1:=CurrentUserName .Protect Contents:=True, _ AllowFiltering:=False, _ UserInterfaceOnly:=True, _ Password:=WorkBookPassword End With End Sub 

要在Excel中实现行级安全性,您应该避免首先在Excel检索数据 。 因为如果你使用vba进行过滤,很容易被一些用户绕过。 所以它不能被称为安全