分享

权限分配

 EXCEL分享 2020-11-13


 前言

假设一个EXCEL表中有多三个项目的记录,你需要发给三个人填写,每个人只能看到自己的部分,如何去做?

这显然是个权限分配的问题:这个也是系统中常用的功能,主要是为了防止数据误操作或泄密。

 EXCEL 能不能做呢?一点问题也没有

 正文

如下表所示,下表中共有四个表,H001-H003为三个项目,“说明”是每个人都可以看到的,可以是填写该文件的说明性文件,另一个主要原因是因为,EXCEL不允许所有的工作表同时隐藏,必须至少有一个工作表是可见的。

思路:工作表默认除“说明”表外全部隐藏,输入不同的密码,相应表的隐藏方式为可见,为了防止打开后,通过取消隐藏查看其它项目,可以设置工作薄保护。

整个过程可以这样的描述是这个样子的:

当打开工作表时,后台先解锁工作薄保护,然后判断输入密码,确定那个工作表取消隐藏,该工作表取消隐藏后,随即进行工作薄锁定,防止通过取消隐藏,查看其他工作表

当关闭工作表时,后台先解锁工作薄保护,同时隐藏除“说明”外的所有工作表,然后进行工作薄保护。

最后通过工程属性,设定查看密码即可。

整个代码如下:

Private Sub Workbook_BeforeClose(Cancel AsBoolean)

ActiveWorkbook.Unprotect Password:=123

For Each ws In Worksheets

If ws.Name <> "说明" Then

ws.Visible = False

End If

Next

ActiveWorkbook.Protect Password:=123

End Sub

Private Sub Workbook_Open()

ActiveWorkbook.Unprotect Password:=123

pwd = InputBox("请输入密码")

Select Case pwd

Case 111

Worksheets("H001").Visible = True

Case 222

Worksheets("H002").Visible = True

Worksheets("H002").Activate

Case 333

Worksheets("H003").Visible = True

Worksheets("H003").Activate

Case Else

Exit Sub

End Select

ActiveWorkbook.Protect Password:=123

End Sub

 总结

VBA其实并不难!难得是思路!


END

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多