跳至页脚内容
EXCEL 工具

如何取消保护Excel工作表(简单指南)

Iron Software团队撰写。


您正在盯着一张灰色的Excel表。 每个单元格都被锁定。 无法输入,排序失败,右键单击显示一个几乎为空的菜单。 听起来很熟悉吗?

无论您自己设置保护并需要恢复Excel密码,或从同事那里收到文件,或者想要编辑为分发而锁定的电子表格,都有一个简单的路径可重新获得访问权限。 本指南涵盖了每种取消保护Excel工作表的方法,从两秒钟的功能区单击到无宏的XML方法,以便您可以快速恢复工作。

如果您已在YouTube上搜索了视频教程,您可能已经看到了相同的两个方法一遍又一遍地重复。 这篇文章深入更多,涵盖边缘情况、故障排除和现实世界中顶级结果遗漏的每一个场景。

Excel保护简介

Excel保护是一种内置安全功能,旨在帮助用户控制对其数据的访问并防止不必要的更改。 无论您是在处理敏感的财务报告、共享的项目跟踪器,还是任何包含重要信息的Excel文件,保护工具都可以让您决定谁可以查看、编辑或格式化您的内容。

理解密码保护

密码保护是Excel安全性的基石,赋予用户使用密码锁定其Excel工作表或整个工作簿的能力,只有授权用户才知道密码。 当您使用保护工作表保护工作簿选项在审阅选项卡中设置密码时,Excel会加密内容,使其无法编辑甚至无法查看(在文件级别保护的情况下),除非输入正确的密码。

最快的修复:从审阅选项卡取消保护工作表(30秒)

如果Excel工作表没有密码保护,这就是您所需的一切:

  1. 在您的计算机上打开Excel文件。
  2. 单击顶部功能区中的审阅选项卡。
  3. 单击取消保护工作表(它在"保护"组中,通常位于功能区的中右侧)。
  4. 完成。 受保护的工作表立即可编辑。

如何解除Excel工作表保护(简单指南):图1 - 审阅选项卡功能区中突出显示的

如果按钮显示为保护工作表而不是取消保护工作表,则该工作表当前未被保护,您可以自由编辑。

如果单击取消保护工作表打开了密码对话框,并且系统提示您输入您没有的Excel密码,请继续阅读。 您需要以下方法之一。


方法1:右键单击工作表标签

对于以鼠标为主的用户来说,这可以说比功能区更快,并且适用于任何版本的桌面应用程序。

  1. 右键单击屏幕底部工作表标签(工作表名称的标签,例如"Sheet1"或"Budget Q3")。

  2. 在出现的上下文菜单中,单击取消保护工作表
  3. 如果提示,请输入密码。

如何解除Excel工作表保护(简单指南):图2 - 在工作表标签上右键菜单中突出显示的

如果右键单击菜单显示为保护工作表而不是取消保护工作表,则该工作表已解锁。 如果"取消保护工作表"为灰色,则Excel工作簿结构可能受到保护,请参见下面的故障排除部分。

方法2:使用格式菜单(也适用于较旧版本)

在Excel的旧版本(2007–2010)中,或如果更喜欢通过菜单导航而非功能区:

  1. 单击首页选项卡。

  2. 在右侧的单元格组中,单击格式

  3. 在下拉菜单底部,单击取消保护工作表
  4. 如果提示,请输入Excel密码。

如何解除Excel工作表保护(简单指南):图3 - 主页选项卡 → 格式下拉菜单打开,以突出显示底部的

如果您的功能区已被自定义、最小化,或者如果软件布局看起来与标准设置不同,则此路径特别有用。

方法3:键盘快捷键

如果您是键盘优先的人,没有单个按键可以取消保护Excel工作表,但可以使用Excel的Alt键导航,无需触碰鼠标即可到达那里:

Windows:

  • AltRPS依次按下(而不是同时按住)。
  • 此操作导航:Alt(激活功能区快捷键)→R(审阅选项卡)→PS(保护工作表/取消保护工作表开关)。

Mac上,等效的菜单路径是: 工具保护取消保护工作表

默认情况下没有Mac键盘快捷键,但可以通过系统偏好设置→键盘→快捷键→应用快捷键创建一个。 以管理员身份登录您的Mac以保存到您的帐户的快捷键。

方法4:使用VBA取消保护工作表(当您丢失密码时)

当您忘记Excel密码并需要快速移除保护时,这种方法是救命稻草。它允许用户在不知原始密码的情况下取消保护Excel工作表。 它在旧的.XLS文件和大多数.XLSX文件上可靠工作,这些文件使用Excel的内置工作表保护,而不是使用完整打开文件密码加密的文件。

重要注意:这仅适用于工作表保护。 如果Excel提示您输入密码来_打开_文件,这段VBA代码无济于事那是文件级别加密,完全是另一层安全措施。

下面的VBA宏在技术上是一种暴力破解方法:它以高速遍历字符组合,直到找到Excel接受的可用密码等效值。它不会恢复您的原始密码,而是生成一个同样有效的密码,使用户即使忘记密码也能取消保护Excel工作表。 VBA代码可以生成一个可用的密码以解锁受保护的工作表,使得在没有原始密码的情况下可以访问Excel工作表。

步骤

  1. 打开包含受保护工作表的Excel文件。
  2. Alt + F11打开Visual Basic编辑器(VBE)

  3. 在菜单栏中单击插入模块以创建一个新的代码模块。

  4. 将以下VBA代码粘贴到空白模块窗口中:
Sub UnprotectSheet()
    Dim ws As Worksheet
    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 Each ws In ActiveWorkbook.Worksheets
        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
            ws.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 ws.ProtectContents = False Then
                MsgBox "Sheet '" & ws.Name & "' unprotected!"
                Exit Sub
            End If
        Next: Next: Next: Next: Next: Next
        Next: Next: Next: Next: Next: Next
    Next ws
End Sub
Sub UnprotectSheet()
    Dim ws As Worksheet
    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 Each ws In ActiveWorkbook.Worksheets
        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
            ws.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 ws.ProtectContents = False Then
                MsgBox "Sheet '" & ws.Name & "' unprotected!"
                Exit Sub
            End If
        Next: Next: Next: Next: Next: Next
        Next: Next: Next: Next: Next: Next
    Next ws
End Sub
Option Strict On



Sub UnprotectSheet()
    Dim ws As Worksheet
    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 Each ws In ActiveWorkbook.Worksheets
        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
                                                        ws.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 ws.ProtectContents = False Then
                                                            MsgBox("Sheet '" & ws.Name & "' unprotected!")
                                                            Exit Sub
                                                        End If
                                                    Next
                                                Next
                                            Next
                                        Next
                                    Next
                                Next
                            Next
                        Next
                    Next
                Next
            Next
        Next
    Next ws
End Sub
$vbLabelText   $csharpLabel
  1. F5或单击运行按钮(绿色播放三角形)执行程序。

  2. 等待片刻,将弹出一个对话框确认每个Excel工作表已取消保护。
  3. 关闭VBE,返回您的电子表格,工作表现在应该可以完全编辑。

⚠️注意:许多用户报告说,这个方法在对.XLSX文件的第一次尝试中完美运行。 在非常旧的.XLS格式文件上可能需要几秒钟时间。 一旦完成,您将能够完全访问编辑工作表中的所有单元格。

方法5:使用Google Sheets作为免费解决方案

这是一个被低估的技巧,完全绕过Excel的工作表保护无需宏,无需下载或安装软件,无需付费账户。 您只需要一个免费的Google账户。 Google Sheets通常忽略Excel的工作表级别保护,使用户无需知道密码即可取消保护Excel工作表。

  1. 登录您的Google账户并在浏览器中打开Google云端硬盘drive.google.com)。

  2. 将您的.XLSX文件上传到云端硬盘中(从桌面拖放,或单击+新建→文件上传以浏览您的计算机)。

  3. 在云端硬盘中右键单击XLSX文件并选择用Google Sheets打开
  4. Google Sheets将打开文件并忽略工作表级别保护用户可以立即编辑之前受保护的工作表,即使您不知道密码。
  5. 完成编辑后,转到文件→下载→Microsoft Excel(.XLSX)将其保存回XLSX格式。

注意:此方法对需要在不知道原始密码的情况下取消保护Excel工作表的用户特别有用。 它允许您在无需密码的情况下取消保护Excel工作表并编辑Excel工作表。

限制:格式、公式和数据应在往返过程中保持,但某些高级Excel功能(如数据透视表,某些图表类型,Power Query)可能无法在Google Sheets中正确显示。 对于简单的数据编辑,此方法效果极佳,只需要浏览器和Google帐户。

方法6:取消保护工作簿(与工作表不同——这是不同的)

这里有一个常见的混淆点:工作表保护工作簿保护是Excel中的两种不同事物,它们需要不同的步骤来取消每个的保护。

  • 工作表保护锁定特定工作表的内容,如单元格、公式、格式。
  • 工作簿保护锁定Excel工作簿的结构,即您无法添加、删除、移动、重命名、隐藏或取消隐藏工作表。

如果您在工作表标签上的右键菜单呈灰色,或者您无法添加新的Excel工作表,则工作簿受到保护,而不仅仅是工作表。

要取消保护Excel工作簿

  1. 单击审阅选项卡。

  2. 点击保护工作簿。 如果工作簿受到保护,按钮将显示为"按下"或突出显示。
  3. 单击以切换保护关闭(如果提示请输入密码)。

一旦取消工作簿保护,就可以使用本教程中的任一方法取消保护单个工作表。

方法7:直接编辑XML文件(无需宏)

这种方法适用于.XLSX文件,这实际上是包含XML文件的zip归档,不需要VBA或任何第三方软件下载。 它允许用户在不知道密码的情况下取消保护Excel工作表。 这是本教程中技术上最动手的方法,但许多非程序员在理解文件扩展名技巧后发现它很简单。

关键洞察:.XLSX文件只是一个伪装成zip文件的zip文件。当您将文件扩展名从.XLSX更改为.ZIP时,可以像任何其他zip归档一样打开它并编辑内部的XML文件。例如,为了取消保护Excel工作表,工作表保护存储为相关工作表文件中的单个XML标记(如第一个工作表的sheet1.xml),删除该标记,保存修改后的XML文件,保护即被移除。 这种方法使用户能够解锁没有密码的Excel工作表,使其可以被用户访问。

分步说明

  1. 首先制作一份.XLSX文件的副本,您即将直接编辑它,因此务必在桌面上或计算机的单独文件夹中保存备份。

  2. 将副本重命名为.ZIP文件扩展名,而不是.XLSX(例如Budget.xlsx→Budget.zip)。 更改文件扩展名时,Windows可能会显示警告——确认重命名。
  3. 使用Windows资源管理器或7-Zip等压缩程序打开zip文件。
  4. 导航到zip归档中的xl/worksheets/文件夹。
  5. 找到与受保护工作表相对应的XML文件(例如sheet1.xml,sheet2.xml)。
  6. 将其提取到桌面,然后使用计算机上的记事本或任何纯文本编辑器打开它。

  7. 在记事本中使用Ctrl + F搜索sheetProtection。

  8. 找到<sheetProtection标记,通常看起来像这样:<sheetProtection algorithmName="SHA-512" hashValue="..." password="..." .../>。 这是强加锁定的工作表保护标记。
  9. 选择并删除整个sheetProtection标记行。

  10. 在记事本中保存修改后的XML文件。

  11. 将修改后的XML文件复制回zip归档中,替换原始文件(拖放到Windows资源管理器中,或者使用7-Zip的更新功能)。

  12. 通过将文件扩展名从.zip更改为.xlsx,将zip归档重命名回.xlsx格式。
  13. 在Excel中打开文件,该工作表现在已解锁并完全可编辑。

⚠️重要:只删除标记。 不要编辑或删除XML文件中的任何其他行。修改错误的标记会损坏电子表格。 始终在副本上工作,永远不要在原始文件中工作。

暴力破解方法取消保护Excel

暴力破解方法是当密码被遗忘时解锁Excel工作表的最后手段。 此技术涉及系统化地尝试每一个可能的密码组合,直到找到正确的为止。 虽然暴力破解对简单或短密码可能有效,但由于可能性的数量庞大,对较长、复杂的密码来说就变得不切实际。

在Excel的上下文中,可以使用专用的软件或VBA脚本自动输入不同密码组合来进行暴力破解攻击。 一些工具专门设计用于通过利用保护算法中的弱点(尤其是在旧版本的Excel中)来解锁Excel工作表或工作簿。

但是,了解使用暴力方法的伦理和法律影响至关重要。 试图在没有所有者许可的情况下解锁Excel工作表或工作簿不仅不道德,而且可能是非法的。 暴力破解应该仅用于您自己的文件,当您确实忘记密码并没有其他恢复访问的方法时。

如果您决定使用蛮力方法,请谨慎进行。 始终使用信誉良好的软件或可信的VBA代码,并注意由于密码复杂性,过程可能会花费相当多的时间。 对大多数用户来说,这种方法是最后的选择,但当其他选项都用尽时,它可能是一个救星,尤其是在您需要解锁Excel表以访问或编辑重要数据时。


常见问题及故障排除

"取消工作表保护"灰显或缺失

这通常意味着Excel工作簿结构受到保护。 转到审阅→保护工作簿并先禁用,然后再次尝试取消对工作表的保护。 这是人们在这个过程中最常遇到的错误。

密码对话框出现但忘记密码

尝试VBA蛮力宏(方法4)或XML文件编辑方法(方法7)。 Google Sheets方法(方法5)也可以在没有密码提示的情况下绕过锁定。 所有这三种方法都适用于那些不再有原始密码访问权限的用户。

编辑XML后出现"文件损坏"错误

您可能修改了标签之外的某些内容,或在将修改后的XML文件放回zip档案之前保存不正确。还原您的备份副本并重试,使用记事本的查找功能(Ctrl + F)精确定位sheetProtection标签再删除。

VBA宏运行但没有任何效果

确保在您的安全设置中启用了宏。 转到文件→选项→信任中心→信任中心设置→宏设置并选择启用所有宏(您之后可以还原此设置)。 还要确认您将VBA代码粘贴到模块中(插入→模块),而不是直接粘贴到工作表或工作簿代码窗格中。 如果您粘贴在VBE的错误位置,程序将无法正常运行。

文件打开时需要密码

这是文件级加密,与工作表保护是不同的安全层。 如果Excel在文件打开前向您询问密码,这篇文章中的方法都无效。您需要原始密码或专门的文件恢复软件。

Mac上的布局看起来不同

在Mac上,取消保护Excel工作表的路径为工具→保护→取消保护工作表。 审阅标签方法也有效,功能区布局因版本略有不同,但取消保护工作表按钮在同一组中。VBA方法(Alt + F11)也适用于Mac Excel。

取消保护后可以编辑某些单元

某些Excel工作表使用更细粒度的权限系统,即使在移除一般工作表保护后,某些单元格或范围仍为特定用户锁定。 如果您取消了工作表保护但仍无法编辑特定区域,请检查审阅→允许编辑范围以查看是否设置了范围级访问控制作为单独的安全层。

对于开发者:使用IronXL程序化地取消Excel工作表保护

如果您需要在自动化工作流中取消保护Excel工作表,如处理文件批次、构建Web应用或与内部系统集成,手动通过桌面软件移除保护在规模上是不现实的。

IronXL是一个.NET库,允许您直接在C#中读取、写入和操作Excel文件,无需在服务器上安装Excel。 移除工作表保护只需一行代码,无需GUI访问,无需密码提示,无需手动编辑XML文件。

using IronXL;
WorkBook workBook = WorkBook.Load("ProtectedReport.xlsx");
WorkSheet sheet = workBook.WorkSheets[0];
// Remove sheet protection programmatically
sheet.UnprotectSheet("your-password-here");
workBook.SaveAs("UnprotectedReport.xlsx");
using IronXL;
WorkBook workBook = WorkBook.Load("ProtectedReport.xlsx");
WorkSheet sheet = workBook.WorkSheets[0];
// Remove sheet protection programmatically
sheet.UnprotectSheet("your-password-here");
workBook.SaveAs("UnprotectedReport.xlsx");
Imports IronXL

Dim workBook As WorkBook = WorkBook.Load("ProtectedReport.xlsx")
Dim sheet As WorkSheet = workBook.WorkSheets(0)
' Remove sheet protection programmatically
sheet.UnprotectSheet("your-password-here")
workBook.SaveAs("UnprotectedReport.xlsx")
$vbLabelText   $csharpLabel

对于Excel工作簿级别的保护,IronXL也能处理,无需手动操作zip档案。

// Remove Excel workbook structure protection
workBook.Unprotect("workbook-password");
workBook.SaveAs("UnprotectedWorkbook.xlsx");
// Remove Excel workbook structure protection
workBook.Unprotect("workbook-password");
workBook.SaveAs("UnprotectedWorkbook.xlsx");
$vbLabelText   $csharpLabel

不需要安装Excel。 适用于ASP.NET Web应用、控制台应用、Azure函数和Windows服务。 通过NuGet下载库,并在几分钟内将其添加到您的项目中。

IronXL Excel库页面上查找完整文档,包括如何程序化地保护、取消保护和管理Excel文件的安全。

快速参考:您应该使用哪种方法?

|状态|最佳方法| |---|---| |没有设置密码|审阅标签→点击取消保护工作表| |无密码,首选键盘|Alt→R→PS| |密码未知,启用宏|VBA蛮力宏(方法4)| |密码未知,无宏|编辑XML文件(方法7)| |快速修复,只需编辑数据|上传到Google Sheets(方法5)| |Excel工作簿结构被锁定|首先取消保护工作簿(方法6)| |批量处理/自动化|IronXL for .NET(开发者部分)|


摘要

知道如何取消保护Excel工作表是一项首次觉得不可能,第二次却显而易见的技能。 对大多数用户来说,这是一项两秒钟的工作:单击审阅标签,然后单击取消保护工作表。 当您被要求输入您没有的Excel密码时,VBA蛮力方法和XML文件方法都能在无需下载任何专业软件的情况下奏效。

大多数视频教程忽略的最大问题:工作表保护工作簿保护是分开的。 如果您的右键菜单为灰色或取消保护工作表按钮无效,请首先检查审阅标签中的保护工作簿设置。单这一点区分就能帮您节省大量时间和挫折。

无论您使用哪种方法,始终在开始前保存您的XLSX文件的备份副本。 备份的电子表格只需两秒钟即可创建,可能会为您从损坏的文件中脱身。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

钢铁支援团队

我们每周 5 天,每天 24 小时在线。
聊天
电子邮件
打电话给我