Excel 工作表密码保护的解除方法

PS:长密码不太好用
PS:克服的是”校阅”选项的”保护工作表”

利用 VBA 巨集程式破解法

只适用2016版Excel及之前版本

Excel 工作表密码保护的解除方法

当开启一个 Excel工作表,进入后要看工作表上的公式如何运作,才发现工作表受到密码保护,上网搜寻了一下破解方法,试过很多种方法都太麻烦,最后终于找到最简单的破解方法,借此分享,希望用的到的人不必再一一去试。

Excel 工作表密码保护的解除方法

利用 VBA 巨集程式破解法:

1:打开该文件,切换到“检视”选项,点击“巨集”→“录制巨集”,出现“录制巨集”窗口,在“巨集名称”随意输入一名称(假设:ABC),点击“确定”退出;

2:再点击“巨集”→“检视巨集”,选择“巨集名称”下的“ABC”并点击右边的“编辑”,会自动打开“Microsoft Visual Basic”编辑器,用以下的内容完全替换右侧窗口中的所有编码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Sub  ABC( )

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

3:再点击“巨集”→“检视巨集”,选择“巨集名称”下的“ABC”并点击“执行”,密码就现形了。

4:切换“校阅”选项,点击“保护工作表”,然后输入密码即可解除锁定。


上述方法仅适用工作表被密码保护的档案,若是档案被密码锁住,则必须利用破解工具,搜寻网路会发现许多破解工具,其中试过 Password Recovery 还不错!


解析:
这段VBA代码,主要使用【For Next循环】和【Chr函数】

循环组成各种可能出现的字符串组合,来破解出正确的密码。

其中,除了变量n,其他变量的结果较为固定,Chr(65)结果是A,Chr(66)结果是B。

大致的代码说明如下,仅供参考。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

Sub ABC()
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 '变量n之外,在AB之间循环;变量n在大小写字母及各种符号之间循环
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
'首个工作表的A1单元格写入密码
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