撤销工作表保护怎么撤销(撤销工作表保护的方法步骤)

撤销工作表保护怎么撤销(撤销工作表保护的方法步骤)

  看完本篇文章,你可能学会了怎么解除工作表密码保护,但是,解决有些问题,其实没这么复杂。

  数据模板的哪些事

  在卫生局上班的一个朋友传过来一个Excel表格,说这个表格有问题,他怎么都搞不定,让我帮他修改下。我便欣然答应,让微信发过来。

  实名制数据采集模板

  收到发过来的表格,我打开一看,这明显就是某个管理系统的数据录入模板,做数据分析的人都知道,原始数据的格式是非常重要的,常常会因为一个数据格式的错误,导致导入系统后结果发生很大的偏差。因此,为了防止录入人员意外修改数据模板的固有格式,通常系统都会对这些“模板式”的工作表进行保护处理。

  有问题的录入数据表

  显然,我朋友录入的这个数据表因为操作不当(可能是进行了某些复制、粘贴等不规范操作)录入的数据格式比较混乱,单元格的字体大小、加粗属性、字体颜色不一致;对齐方式不一致;日期格式也不一致。他想修改成统一的单元格格式,因为这个数据模板设置了工作表保护的原因,他当然修改不了!

  功能区灰色,无法编辑

  撤消工作表保护,需要密码

  显然,要将混乱的数据格式统一修改,就必须要编辑,但是目前工作表被保护了,撤销工作表保护又没有密码,此时唯一的办法我就想到了破解清除掉工作表保护密码,才能完成朋友交给的任务。

  说干就干,目前流行两种清除工作表保护密码的方法:(切记不可用于不正当操作)

  第1种,利用VBA清除(简单、高效)

  操作方法:实践环节能用图片表达的就尽量不用文字,我直接上图:

  方法1:利用VBA代码清除工作表保护操作图

  VBA清除密码操作成功,可以编辑

  附:清除工作表保护密码VBA代码:

  Public Sub 工作表保护密码破解()

  Const HUANHANG As String = vbNewLine & vbNewLine

  Const MINGCHEN As String = "清除工作表保护密码"

  Const JINGGAO As String = "该工作簿中的工作表密码保护已全部清除!!" & HUANHANG & "请记得另保存" _

  & HUANHANG & "注意:不要用在不当地方,要尊重他人的劳动成果!"

  Const TISHI1 As String = "该文件工作表中没有加密"

  Const TISHI2 As String = "该文件工作表中没有加密2"

  Const KSPJ As String = "解密需花费一定时间,请耐心等候!" & HUANHANG & "按确定开始清除!"

  Const FXMM1 As String = "密码重新组合为:" & HUANHANG & "$$" & HUANHANG & _

  "如果该文件工作表有不同密码,将搜索下一组密码并修改清除"

  Const FXMM2 As String = "密码重新组合为:" & HUANHANG & "$$" & HUANHANG & _

  "如果该文件工作表有不同密码,将搜索下一组密码并解除"

  Const MSGONLYONE As String = "确保为唯一的?"

  Dim w1 As Worksheet, w2 As Worksheet

  Dim i As Integer, j As Integer, k As Integer, l As Integer

  Dim m As Integer, n As Integer, i1 As Integer, i2 As Integer

  Dim i3 As Integer, i4 As Integer, i5 As Integer, i6 As Integer

  Dim PWord1 As String

  Dim ShTag As Boolean, WinTag As Boolean

  Application.ScreenUpdating = False

  With ActiveWorkbook

  WinTag = .ProtectStructure Or .ProtectWindows

  End With

  ShTag = False

  For Each w1 In Worksheets

  ShTag = ShTag Or w1.ProtectContents

  Next w1

  If Not ShTag And Not WinTag Then

  MsgBox TISHI1, vbInformation, MINGCHEN

  Exit Sub

  End If

  MsgBox KSPJ, vbInformation, MINGCHEN

  If Not WinTag Then

  Else

  On Error Resume Next

  Do 'dummy do loop

  For i = 65 To 66: For j = 65 To 66: For k = 65 To 66

  For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66

  For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66

  For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126

  With ActiveWorkbook

  .Unprotect Chr(i) & Chr(j) & Chr(k) & _

  Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & _

  Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)

  If .ProtectStructure = False And _

  .ProtectWindows = False Then

  PWord1 = Chr(i) & Chr(j) & Chr(k) & Chr(l) & _

  Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _

  Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)

  MsgBox Application.Substitute(FXMM1, _

  "$$", PWord1), vbInformation, MINGCHEN

  Exit Do 'Bypass all for...nexts

  End If

  End With

  Next: Next: Next: Next: Next: Next

  Next: Next: Next: Next: Next: Next

  Loop Until True

  On Error GoTo 0

  End If

  If WinTag And Not ShTag Then

  MsgBox MSGONLYONE, vbInformation, MINGCHEN

  Exit Sub

  End If

  On Error Resume Next

  For Each w1 In Worksheets

  'Attempt clearance with PWord1

  w1.Unprotect PWord1

  Next w1

  On Error GoTo 0

  ShTag = False

  For Each w1 In Worksheets

  'Checks for all clear ShTag triggered to 1 if not.

  ShTag = ShTag Or w1.ProtectContents

  Next w1

  If ShTag Then

  For Each w1 In Worksheets

  With w1

  If .ProtectContents Then

  On Error Resume Next

  Do 'Dummy do loop

  For i = 65 To 66: For j = 65 To 66: For k = 65 To 66

  For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66

  For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66

  For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126

  .Unprotect Chr(i) & Chr(j) & Chr(k) & _

  Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _

  Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)

  If Not .ProtectContents Then

  PWord1 = Chr(i) & Chr(j) & Chr(k) & Chr(l) & _

  Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _

  Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)

  MsgBox Application.Substitute(FXMM2, _

  "$$", PWord1), vbInformation, MINGCHEN

  'leverage finding Pword by trying on other sheets

  For Each w2 In Worksheets

  w2.Unprotect PWord1

  Next w2

  Exit Do 'Bypass all for...nexts

  End If

  Next: Next: Next: Next: Next: Next

  Next: Next: Next: Next: Next: Next

  Loop Until True

  On Error GoTo 0

  End If

  End With

  Next w1

  End If

  MsgBox JINGGAO, vbInformation, MINGCHEN

  End Sub

  以上是清除工作表保护代码,直接复制粘贴到sub模块运行即可!

  第2种,利用RAR软件清除(不一定能成功)

  操作方法:实践环节,依然直接上操作图:

  方法2:利用RAR软件清除工作表密码保护

  将带有密码保护的excel表格文件扩展名由.xlsx改为.rar压缩文件格式。

  打开压缩包,依次进入“xl”→“worksheets”文件夹,在这里找到你需要清除密码的工作表(里面可能有几个sheet,找到你要处理的sheet,如果不知道是哪个sheet,可通过vba编辑器的工程属性查看)本案例信息表对应的是“sheet4.xlm”,点击对应的sheet.xlm,然后右键用记事本打开,找到含有“”文字的这段代码后,将其删除并保存当前记事本文件。

  通过vba工程属性查看 对应的sheet表

  3.保存修改后的“sheet4.xml”,回到压缩包软件,点击确定修改更新到压缩包,再将该文件的扩展名.rar改为原后缀名.xlsx。

  4.此时,再打开这个Excel表格后工作表保护密码已经清除了,是不是很有成就感呢?

  虽然通过暴力清除工作表密码保护的方法,实现了对模板数据表的编辑。

  但是,我们都错了!!!处理这样的问题,用不着这么复杂。

  因为这种模板式的表格,被加密保护本来就是系统为了防止录入人员意外修改格式而设置的。它对表格中的一些字段格式都是有固定要求和说明的,并且数据行都已经设定好了单元格格式,录入人员只需要录入数据值,不需要修改单元格格式。

  如果在后期录入的数据格式出现了参差不齐的情况,根本不用这么麻烦去破解什么工作表密码。此时,你只需要一个Ctrl+D快捷键就可以轻松解决。Ctrl+D的功能是向下复制填充,被加密保护了的工作表,单元格格式是没法修改的,但利用Ctrl+D可以将模板数据表中第一行的原始格式向下复制到数据录入区域,然后再清除复制的数据,重新粘贴需要录入数据的值,这样操作就达到了恢复模板数据表的统一格式。

  恢复Excel数据模板格式的正确姿势图

  显然,对于朋友的这个问题,我们费尽周折破解密码,是把简单的问题复杂化了。

  今天分享这样的一个案例,除了教会大家如何清除工作表密码保护的两种方法外,也给遇到了类似问题的朋友们提个醒,小心避坑,不要把简单的问题复杂化!记住:任何事情都肯定有更简易的方法,任何问题都肯定有更简单的答案,越简单就越容易找到核心,越容易达致成功。

推荐阅读