Skip to content

Instantly share code, notes, and snippets.

@parano
Created February 20, 2012 07:18
Show Gist options
  • Save parano/1868242 to your computer and use it in GitHub Desktop.
Save parano/1868242 to your computer and use it in GitHub Desktop.
Excel表格密码保护的解除方法
表格受密码保护时,我们修改数据Excel弹出“您试图更改的单元格或图表受保护,因而是只读的。
若要修改受保护单元格或图表,请先使用‘撤消工作表保护’命令(在‘审阅’选项卡的‘更改’组中)来取消保护。
可能会提示输入密码。这时候我们可以用VBA宏代码破解法来破解表格保护密码:
第一步:打开该文件,先解除默认的“宏禁用”状态,方法是点击工具栏下的“选项”状态按钮,
打开“Microsoft Office安全选项”窗口,选择其中的“启用此内容”,“确定”
再切换到“视图”选项卡,点击“宏”→“录制宏”,出现“录制新宏”窗口,在“宏名”定义一个名称为:
PasswordBreaker,点击“确定”退出;
第二步:再点击“宏”→“查看宏”,选择“宏名”下的“PasswordBreaker”并点击“编辑”,
打开“Microsoft Visual Basic”编辑器,用如下内容替换右侧窗口中的所有代码:
Sub PasswordBreaker()
  Dim i As Integer, j As Integer, k As Integer
  Dim l As Integer, m As Integer, n As Integer
  Dim i1 As Integer, i2 As Integer, i3 As Integer
  Dim i4 As Integer, i5 As Integer, i6 As Integer
  On Error Resume Next
  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
  ActiveSheet.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 ActiveSheet.ProtectContents = False Then
  MsgBox "One usable password is " & Chr(i) & Chr(j) & _
  Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & _
  Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
  ActiveWorkbook.Sheets(1).Select
  Range("a1").FormulaR1C1 = Chr(i) & Chr(j) & _
  Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & _
  Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
  Exit Sub
  End If
  Next: Next: Next: Next: Next: Next
  Next: Next: Next: Next: Next: Next
End Sub
第三步:再点击“宏”→“查看宏”,选择“宏名”下的“PasswordBreaker”并点击“执行”,密码就现形了
第四步:点击“撤消工作表保护”,然后输入密码即可解除锁定;
测试结果,密码破解可用,但是很晕的是破解的密码跟原来的密码有很大的差距,想不明白了,反正能用就好。
@Treasure1
Copy link

厉害6666

@hpub
Copy link

hpub commented Apr 13, 2019

感谢

@asdwl
Copy link

asdwl commented May 20, 2019

实测有效,感谢

@Continent7
Copy link

亲测有效

@abusinessman
Copy link

想请问一下,我已经运行1个小时了,还在运行中,是什么情况呢?

@wangwanjie
Copy link

mac 上 Office 2019亲测可用,谢谢

@reverof000
Copy link

把excel用txt保存,然后把txt复制到表格里不就好了。。

@ougithubou
Copy link

我试了一下,为什么密码都是11个“A”啊,密码也不是正确的。请问有人遇到过这个情况吗?

@wonpn
Copy link

wonpn commented Feb 11, 2020

亲测有效,什么原理看不懂

@AI2Hub
Copy link

AI2Hub commented May 8, 2020

mac 上 Office 2019亲测可用,谢谢

这个测试,密码是11A啊,mac office 2019 无法绕过啊 ,都不能选择宏运行的 ? 请教是怎么操作的

@flyingzl
Copy link

我试了一下,为什么密码都是11个“A”啊,密码也不是正确的。请问有人遇到过这个情况吗?

我这边的密码是 AAABBABAAAB,但实际上显示密码错误

@tcitry
Copy link

tcitry commented Jun 25, 2020

我试了一下,为什么密码都是11个“A”啊,密码也不是正确的。请问有人遇到过这个情况吗?

我这边的密码是 AAABBABAAAB,但实际上显示密码错误

@flyingzl 带着后面的冒号老哥,比如我的是AAABBABBBAB:

@SteelTimber
Copy link

謝謝,大神。

@qqzwc
Copy link

qqzwc commented Oct 14, 2020

Sub DeletePW()
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, AllowFiltering:=True
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, AllowFiltering:=True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, AllowFiltering:=True
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, AllowFiltering:=True
ActiveSheet.Unprotect
End Sub

来源:https://my.oschina.net/u/4315754/blog/3459015

@youngyy18
Copy link

谢谢,大神

@hanke0105
Copy link

执行宏会导致excel无响应,试了一上午了,取消加载项,取消硬件加速,禁用信任中心里面的体验,各种办法都试了,都不行,win10+office2019。求助啊

@chang700
Copy link

以魔制魔,我献上一策,上传到 谷歌文档,密码就没了.然后再导出就行了

@arienjy
Copy link

arienjy commented Mar 23, 2022

哈哈哈,上传到腾讯文档也可以,然后再导出

@mmutj
Copy link

mmutj commented Aug 27, 2022

厉害阿 老哥 牛的

@skyshenma
Copy link

哈哈哈,上传到腾讯文档也可以,然后再导出

老哥,还是你这个nb。哈哈哈哈亲测有效

@legend053
Copy link

Dim i As Integer, j As Integer, k As Integer
    Dim l As Integer, m As Integer, n As Integer
    Dim i1 As Integer, i2 As Integer, i3 As Integer
    Dim i4 As Integer, i5 As Integer, i6 As Integer
    On Error Resume Next
    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
    ActiveSheet.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 ActiveSheet.ProtectContents = False Then
    MsgBox "One usable password is " & Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
    ActiveWorkbook.Sheets(1).Select
    Range("a1").FormulaR1C1 = Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
    Exit Sub
    End If
    Next: Next: Next: Next: Next: Next
    Next: Next: Next: Next: Next: Next

亲测,这个code在office 365上有用。

@elvisw
Copy link

elvisw commented Jul 10, 2023

MsgBox改成Debug.Print。运行结果会输出到立即窗口中,可以直接复制。MsgBox里的文字复制不了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment