表格受密码保护时,我们修改相关公式或数据时 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 宏代码破解法来破解表格保护密码。

  1. 解除默认的 “宏禁用” 状态打开该文件,先解除默认的 “宏禁用” 状态,方法是点击工具栏下的 “选项” 状态按钮,打开 “Microsoft Office 安全选项” 窗口,选择其中的 “启用此内容”,“确定”。
  2. 添加并编辑宏。切换到 “视图” 选项卡,点击 “宏”→“录制宏”,出现 “录制新宏” 窗口,在 “宏名” 定义一个名称为 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
  1. 再点击 “宏”→“查看宏”,选择 “宏名” 下的 “PasswordBreaker” 并点击 “执行”,密码就现形了。
  2. 点击 “撤消工作表保护”,然后输入密码即可解除锁定。

测试结果,密码破解可用。