不少人尝试过给工作组设定工作表保护,但是,没能成功,而且,总不甘心。

好在,用VBA处理起来不算麻烦。
右键点击任一工作表标签,将下面的代码粘贴到光标处:
- Sub 保护()
- Dim Sh As Worksheet
- For Each Sh In Worksheets
- Sh.Protect
- Next
- MsgBox "OK"
End Sub
将光标定位到该代码的任意位置,按F5运行该代码。
如果要给工作表保护设置密码,可在 Protect 后面写入密码,用空格分开,密码前后加上半角双引号,假如密码为123:
Sh.Protect "123"
如果要批量撤销工作表保护,可将命令Protect改为Unprotect,如果有密码,同样在后面写入密码,如:
- Sub 撤销保护()
- Dim Sh As Worksheet
- For Each Sh In Worksheets
- Sh.Unprotect "123"
- Next
- MsgBox "OK"
- End Sub
我们会注意到,Excel基本操作中,用同一个菜单项或命令按钮执行“保护”和“撤销保护”两个操作。我们也可以把上面两段代码合并为一段代码:
- Sub 保护全部工作表()
- Dim pc As Boolean, cMM$, Sh As Worksheet
- pc = Me.ProtectContents
- On Error Resume Next
- cMM = Application.InputBox("请输入" & IIf(pc, "撤销", "") & "工作表保护密码:", "密码", Type:=2)
- If cMM <> "123" Then Exit Sub ’输入的密码是123
- Application.ScreenUpdating = False
- For Each Sh In Worksheets
- If pc Then
- Sh.Unprotect ("xx") ’实际工作表保护密码是xx
- Else
- Sh.Protect ("xx")
- End If
- Next
- Application.ScreenUpdating = True
- End Sub
使用Excel的人中,一部分人的工作十分需要VBA的功能,比如分页打印,便他的工作需要中,除此以外,不再需要VBA,重要一点,他也没有学习VBA的兴趣。
他们需要一种拿来就用的,像新建、打开、保存、打印一样简单的功能。
为了能满足更多人的需求,欢迎各位共同出谋献策。