Excel VBA 7.63批量解除工作表保护,比你拿钥匙开门还快

一起学习,一起进步~~

昨天我们学习了工作表的批量保护的功能,通过昨天的方法呢,我们可以轻松快速的实现多个工作表的加密,在一定程度上能够实现数据的保护功能,当其他人将数据使用完之后,返回来给我们修改的时候,新的问题出现了!工作表的保护是挺好,好到现在我自己修改数据都需要一个一个去解除密码保护才可以修改,太麻烦了,既然有批量实现工作表的保护功能,那么有没有相对的批量解除保护的功能?

场景说明

批量解除保护的功能肯定是存在的,不然批量保护在某种程度上也等于是阻扰我们自己丢数据的修改,自找麻烦

来看看我们的案例,这是我们上节学习批量保护的工作薄,上节我们已经成功的将总表之外的其他的工作表都已经加密了,这样的提示也证明所有的工作表都处于一个锁定的状态,我们来尝试下批量解锁

代码区

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-k6”,希望大家多支持~~,多多关注 ~ ~

好了,明晚21:00,准时再见!


因为公众号没有留言功能(开的比较晚),所以建立一个线下微信群,主要为大家提供一个交流的平台,同时大家也可以提一些对公众号的意见和看法,大家一起学习,一起进步。

(0)

相关推荐