表格受密码保护时,我们修改相关公式或数据时 Excel 会弹出:
警告
您试图更改的单元格或图表位于受保护的工作表中。若要进行更改,请取消工作表保护。您可能需要输入密码。
Alert
The cell or chart you’re trying to change is on a protected sheet. To make a change, unprotect the sheet. You might be requested to enter a password.
这时候我们可以用 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” 并点击 “执行”,密码就现形了。
- 点击 “撤消工作表保护”,然后输入密码即可解除锁定。
测试结果,密码破解可用。