You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel VBA宏报错:工作簿结构保护/取消保护触发运行时错误1004

问题分析与解决思路

核心错误点

  • 对象混淆导致参数错误:Structure是**工作簿(Workbook)专属的保护参数,用于控制是否锁定工作簿结构(如新增/删除/重命名工作表),但你在工作表(Worksheet)**的Protect/Unprotect方法中使用了这个参数,这是触发1004错误的主要原因。
  • 密码语法错误:代码里的(XYZ1!!)、(XYZ1!)未用双引号包裹,VBA会将其识别为未定义变量,直接引发报错。正确的密码格式应为字符串,比如"XYZ1!!"。

修正后的代码示例

1. 取消保护(工作簿结构+所有工作表)

' 取消工作簿结构保护
ActiveWorkbook.Unprotect Password:="XYZ1!!"

' 取消所有工作表保护
For Each wsheet In ActiveWorkbook.Sheets
    wsheet.Unprotect Password:="XYZ1!!"
Next wsheet

2. 重新保护(工作簿结构+所有工作表)

' 重新保护所有工作表
For Each wsheet In ActiveWorkbook.Sheets
    wsheet.Protect Password:="XYZ1!!"
    ' 可按需添加工作表保护的额外参数,比如AllowSorting:=True、AllowFiltering:=True等
Next wsheet

' 重新保护工作簿结构
ActiveWorkbook.Protect Password:="XYZ1!!", Structure:=True

额外注意事项

  • 若工作簿或工作表未设置保护,执行Unprotect不会报错,但密码不匹配时仍会触发1004错误,可按需添加错误捕获逻辑。
  • 工作表Protect方法的可选参数可根据业务需求调整,确保宏执行时所需的操作权限开放。

内容的提问来源于stack exchange,提问作者NewbieNils

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 17:02:37