我目前正在进行用户访问审核工作,我正在尝试生成一个简单的工具,我可以将所有当前用户访问权限转储到excel中,并且它将检查对应该具有的访问权限的访问权限。模板。
最近2周用于生成数据透视表并手动检查差异,但由于最近的一些更改,我需要重新检查。
方案;
在Excel中,我导出了用户ID,角色和职责(3列),在新行中,数据的唯一变化是直到下一个用户的职责。在电子表格中,有数千名用户,300个不同的角色和数千个职责。
在第二个电子表格中,我有角色应具有的实际角色和职责的模板(2列)。如果我添加一个带有标识符而不是用户ID的列,则为3列,例如"模板"
我觉得VBA可用于生成与实际角色不匹配的所有用户ID的列表。但是我对其他想法持开放态度,但不能使用不在我们白名单上的软件。
即提供缺少或承担责任的用户列表
还应该注意的是,第一张表中有相同角色的许多用户,但在第二张表中,每个角色只有一个模板。
我是VBA脚本的相对noob,非常感谢帮助/选项可以使这项任务变得简单。
请告诉我您的建议?
答案 0 :(得分:0)
工作表1:实际用户名(A列),实际角色(B列)。 工作表2:用户名不正确(列A),角色不正确(B列)。
此基本脚本运行抓取工作表1中存在的用户名和角色的值,并检查工作表2中两列的值。如果这些值不匹配(如果它们不正确),则从中删除不正确的行工作表(2)。
您可以更改满足条件时发生的情况,例如更改无效角色的背景颜色等。
Public Sub removeIncorrectRoles()
For Each rngCell In Worksheets(1).Range("A1:A" & Range("A1").End(xlDown).Row) 'Loops through usernames within the "correct" sheet.
strUser = rngCell.Value 'Stores current username to avoid looking back to worksheet.
strRole = rngCell.Offset(, 1).Value 'Stores current role to avoid looking back to worksheet.
For Each rngCell2 In Worksheets(2).Range("A1:A" & Range("A1").End(xlDown).Row) 'Loops through usernames within the "incorrect" sheet.
If rngCell2.Value = strUser Then 'If the username in the incorrect page matches the correct name.
If rngCell2.Offset(, 1).Value = strRole Then 'If the role on the "incorrect" page matches the actual role.
'Do Nothing
Else
rngCell2.EntireRow.Delete 'If the usernames match but the role doesn't then the line is removed.
End If
End If
Next rngCell2 'Checks the next "incorrect" page value.
Next rngCell 'Assigns the next "correct" page name and roll.
End Sub
请记住,这可能效率不高,但应该有效。如果您需要什么,请告诉我。