VBA解除Excel工作表保护

Excel工作表保护解除

  工作表保护后无法编辑内容,可能是密码忘记,不可暴力破解隐私

1 打开需的Excel

  2 Alt + F11 打开代码编辑,点击任意代码编辑项,将如下代码复制,并运行。

复制代码
Public Sub GetWorkbookPassword()

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
Application.DisplayAlerts = False


    WinTag = ActiveWorkbook.ProtectStructure Or ActiveWorkbook.ProtectWindows

    ShTag = False
    For Each w1 In Worksheets
        ShTag = ShTag Or w1.ProtectContents
    Next w1

    If Not ShTag And Not WinTag Then
        MsgBox "该工作表没有设置保护密码", , "系统提示"
        Exit Sub
    End If

    If Not WinTag Then
    Else
        On Error Resume Next
        Do
        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
            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 ActiveWorkbook.ProtectStructure = False And ActiveWorkbook.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)
                Exit Do
            End If

        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 "确保密码唯一的?", , "系统提示"
        Exit Sub
    End If

    On Error Resume Next
    For Each w1 In Worksheets
        w1.Unprotect PWord1
    Next w1

    On Error GoTo 0
    ShTag = False

    For Each w1 In Worksheets
        ShTag = ShTag Or w1.ProtectContents
    Next w1

    If ShTag Then
        For Each w1 In Worksheets

            If w1.ProtectContents Then
                On Error Resume Next
                Do
                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
                    w1.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 w1.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)
                        For Each w2 In Worksheets
                            w2.Unprotect PWord1
                        Next w2
                        Exit Do
                    End If
                Next: Next: Next: Next: Next: Next
                Next: Next: Next: Next: Next: Next
                Loop Until True
                On Error GoTo 0
            End If
        Next w1
    End If
    MsgBox "该工作簿中的工作表密码保护已全部解除!请记得另存", , "系统提示"

Application.ScreenUpdating = False
Application.DisplayAlerts = False

End Sub
相关推荐
chatexcel19 小时前
不用写 SQL,如何用AI直连数据库生成可刷新的数据看板?ChatExcel的一种实践
大数据·数据库·人工智能·sql·数据分析·excel
user-猴子21 小时前
还在手动复制粘贴处理Excel?用AI自动化办公
人工智能·自动化·excel
weixin_307779131 天前
Python Pandas读取Excel Sheet生成SQL WHERE条件
python·sql·自动化·excel·pandas
用户298698530141 天前
在 React 中通过 JavaScript 实现 Excel 单元格、行与列的锁定保护
javascript·react.js·excel
用户298698530142 天前
Python 实现 Excel 到 ODS、XPS、PostScript 及 PDF/A-1b 的格式转换
后端·python·excel
本地化文档2 天前
xlwings-docs-l10n
python·github·excel·gitcode·sphinx
用户298698530143 天前
在 React 中拆分 Excel 文件:从工作表到行列的实践
javascript·react.js·excel
不坑老师3 天前
怎么在Word中制作汉字书写笔顺——不坑盒子汉字笔顺步骤在小学低段识字教学中的应用
前端·数据库·人工智能·word·excel·office
不坑老师4 天前
Excel总表如何按班级拆分并分别发送?
前端·数据库·人工智能·excel·ppt·office