VBA一键清除当前工作表保护是首选方法,无需原密码,适用于Windows版Excel 2016/2019/365/2021;其次可手动解压.xlsx为ZIP、删除sheetProtection标签;若知统一密码,可用宏批量解除。

当你打开一份Excel文件,双击单元格却弹出“您试图更改的单元格或图表位于受保护的工作表中”提示,而原始密码早已遗忘,此时必须绕过工作表级保护才能编辑内容——这不是文件打开密码,也不是工作簿结构密码,仅针对单个工作表的Protect Contents限制。
用VBA一键清除当前工作表保护(推荐首选)
此方法无需知道原密码,不修改文件结构,纯Excel原生实现,适用于Windows版Excel 2016/2019/365/2021,且操作后立即生效。
按 Alt + F11 打开VBA编辑器 → 在左侧“项目资源管理器”中右键当前工作簿名称 → 选择“插入”→“模块”。
将以下代码完整粘贴到右侧空白窗口中(注意:不能漏掉末尾的 End Sub):
Sub a()
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, AllowFiltering:=True
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, AllowFiltering:=True
ActiveSheet.Unprotect
End Sub
点击顶部绿色三角形按钮(运行)→ 等待几秒 → 关闭VBA编辑器 → 返回Excel,尝试编辑任意被锁单元格,确认保护已解除。
【必须启用宏】若首次运行时弹出安全警告,务必点“启用内容”,否则代码不会执行。
手动解压XML删除sheetProtection标签(零依赖,适合禁用宏环境)
该方法利用.xlsx本质是ZIP压缩包的特性,直接修改底层配置,对所有Windows系统通用,且不依赖Excel版本或宏设置。
方法一:改后缀→解压→删行→重打包
将Excel文件复制一份备份 → 把副本文件名后缀从 .xlsx 改为 .zip → 遇到系统提示点“是”确认更改。
双击打开该.zip文件 → 进入 xl → worksheets 文件夹 → 找到对应工作表的XML文件(如sheet1.xml、sheet2.xml;若含多个表需逐个处理)。
用记事本或VS Code打开该XML文件 → 按 Ctrl + F 搜索 sheetProtection → 找到形如 <sheetprotection password="A1B2C3" algorithmname="SHA-512" saltvalue="..." spincount="..." hashvalue="..."></sheetprotection> 或简写为 <sheetprotection></sheetprotection> 的整行 → 整行删除 → 保存文件。
将修改后的整个文件夹内容全选 → 右键“发送到 → 压缩文件夹”生成新ZIP → 将新ZIP后缀改为 .xlsx → 用Excel打开验证。
方法二:更快捷的拖放流(适合单表)
改后缀为.zip后,直接双击打开 → 找到目标sheet*.xml → 拖出到桌面 → 记事本打开并删掉sheetProtection行 → 保存 → 再把修改好的XML文件拖回.zip窗口内 → 提示“替换”时点“是” → 关闭ZIP → 改回.xlsx即可。
这一步操作起来很简单,直接把文件拖进去就行。但注意:不要用WinRAR等第三方压缩工具另存为ZIP,否则可能破坏内部目录结构导致Excel无法识别。
批量解除多个工作表保护(统一密码已知时)
如果你记得所有工作表使用的是同一个密码,比如“abc123”,用这段宏能一次性解锁全部,比逐个操作省时得多。
第一步:按 Alt + F11 打开VBA编辑器 → 插入新模块。
第二步:粘贴以下代码:
Sub UnprotectAllSheets()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
ws.Unprotect Password:="abc123"
Next ws
MsgBox "所有工作表已取消保护"
End Sub
第三步:把代码中 "abc123" 替换为你实际使用的密码(若无密码则删掉引号中间所有字符,留空字符串 "")。
第四步:按 Alt + F8 → 选择宏名 UnprotectAllSheets → 点“运行”。


















