前景提要(文末提供源码下载)
昨天我们学习了工作表的批量保护的功能,通过昨天的方法呢,我们可以轻松快速的实现多个工作表的加密,在一定程度上能够实现数据的保护功能,当其他人将数据使用完之后,返回来给我们修改的时候,新的问题出现了!工作表的保护是挺好,好到现在我自己修改数据都需要一个一个去解除密码保护才可以修改,太麻烦了,既然有批量实现工作表的保护功能,那么有没有相对的批量解除保护的功能?
场景说明
批量解除保护的功能肯定是存在的,不然批量保护在某种程度上也等于是阻扰我们自己对数据的修改,自找麻烦
来看看我们的案例,这是我们上节学习批量保护的工作薄,上节我们已经成功的将总表之外的其他的工作表都已经加密了,这样的提示也证明所有的工作表都处于一个锁定的状态,我们来尝试下批量解锁
代码区
Sub UNprotect()Dim sth As Worksheet, str$s = Application.InputBox(\"请输入密码\", \"密码的确定\", , , , , , 8)For Each sth In Worksheets sth.UNprotect \"\" & s & \"\" If Err.Number <> 0 Then str = sth.Name & \"-\" & str End IfNext sthIf Len(str) = 0 Then MsgBox str & \"尚未成功取消保护,请核实密码是否正确\" Else MsgBox \"已全部取消保护!\"End IfEnd Sub
看看效果如何
先输入解锁的密码
电脑总表的密码我们并不知道,所以总表无法用我们上节加密的密码进行解锁,这是正确的结果,然后看看其他的工作表是否已经成果解除保护,我们尝试输入内容看看
可以输入新的内容,并且工作表的保护的按钮也成为了可以进行工作表保护的状态,证明我们的效果实现了。
代码分析
今天的代码依然是非常的简单,重点就一个,工作表的解密
sth.UNprotect \"\" & s & \"\"
这里需要注意,如果你的输入的解除保护的密码是错误的话,那么程序就会报错,影响代码的正常执行,所以为了保证程序的正常执行,我们这里选择跳过报错,在后面利用报错返回的结果来判断程序是否操作成功
If Err.Number <> 0 Then
如果有报错,那么不管报错的内容是什么, Err.Number都不会等于0 ,所以我们可以利用这个来判断是否有报错,并且将报错的工作表名称记录下来,最终通过弹窗的方式反馈给我们。
str = sth.Name & \"-\" & str
============电脑====================
本节课的案例源码已经上传,需要的小伙伴后台私信“7-63-3”,希望大家多支持~~,多多关注 ~ ~
本节案例将会含有批量保护和解除批量保护两个内容,分别对用不同的按钮,当然总表是一个另类的存在。
好了,明晚19:00,准时再见!
电脑