大家好,欢迎来到IT知识分享网。

本文将实现以下安全控制:
- ✅ 打开工作簿时自动锁定所有表格
- ✅ 双击指定区域弹出密码验证窗口
- ✅ 验证成功后方可编辑表格
- ✅ 关闭后重新打开自动恢复锁定状态
第一步:准备工作簿
- 新建Excel工作簿,保存为 .xlsm 格式(启用宏的工作簿)
- 按 Alt + F11 打开VBA编辑器
第二步:添加工作簿事件代码
在VBA编辑器中双击 ThisWorkbook,粘贴以下代码:
Private Sub Workbook_Open() ' 工作簿打开时锁定所有工作表 Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets ws.Protect Password:="", UserInterfaceOnly:=True Next ws Range("A1").Select ' 可选:光标定位到提示位置 End Sub
说明:
Password 后的””是工作表保护密码(可修改)
UserInterfaceOnly:=True 允许VBA操作被保护的工作表
第三步:创建解锁按钮区域
- 在工作表中选择一个提示区域(如A1单元格)
- 输入提示文字:”双击此处解锁编辑”
- 设置单元格背景色(如黄色)突出显示
第四步:添加工作表双击事件
双击对应的工作表(如Sheet1),粘贴以下代码:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) ' 检查是否双击了指定区域 If Not Intersect(Target, Range("A1")) Is Nothing Then Cancel = True ' 阻止默认编辑行为 ' 显示验证窗口 If UserForm1.Show = True Then ' 验证成功时解锁所有工作表 Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets ws.Unprotect Password:="" Next ws MsgBox "验证成功!表格已解锁", vbInformation Else MsgBox "验证失败!", vbCritical End If End If End Sub
第五步:创建验证窗体

- 在VBA编辑器中右键 → 插入 → 用户窗体
- 将窗体命名为 UserForm1
- 添加以下控件:
- 标签(Label):标题=”请输入解锁密码”
- 文本框(TextBox):命名为 txtPassword, PasswordChar=”*”
- 命令按钮1:命名为 btnOK, 标题=”确定”
- 命令按钮2:命名为 btnCancel, 标题=”取消”
窗体代码:
' 确定按钮事件 Private Sub btnOK_Click() If txtPassword.Value = "admin" Then ' 验证密码 Me.Hide UserForm1.Tag = "Success" Else MsgBox "密码错误!", vbExclamation txtPassword.SetFocus End If End Sub ' 取消按钮事件 Private Sub btnCancel_Click() Unload Me End Sub ' 返回验证结果 Public Function Show() As Boolean Me.Show Show = (UserForm1.Tag = "Success") End Function
密码设置:
工作表保护密码:(第二步中设置)
解锁验证密码:admin(第五步代码中设置)
最终效果演示

- 打开工作簿时:所有单元格被锁定(无法编辑)
- 双击黄色提示区域:弹出密码输入窗口
- 输入正确密码”admin”:
- 显示”验证成功”提示
- 所有工作表解除保护
- 关闭并重新打开Excel:自动恢复锁定状态
关键安全设置建议
- 修改默认密码:
‘ 修改工作簿打开事件中的密码 ws.Protect Password:=”你的新密码” ‘ 修改工作表事件中的密码 ws.Unprotect Password:=”你的新密码”
- 隐藏VBA代码:
- VBA编辑器 → 工具 → VBAProject属性 → 保护
- 勾选”查看时锁定工程”,设置查看密码
- 指定区域保护:
‘ 在解锁后启用特定区域编辑 ws.Protect Password:=””, AllowEditRanges:=”可编辑区域”
常见问题解决
- 宏不被信任:文件 → 选项 → 信任中心 → 启用所有宏
- 双击无反应:检查是否启用了事件(开发工具 → 宏安全性 → 启用事件)
- 窗体显示错误:确保窗体名称为”UserForm1″
提示:可通过修改 Range(“A1”) 调整触发区域,或设置多个触发点
通过本教程,你已创建了一个具备企业级安全控制的Excel工作簿,有效防止未经授权的修改,同时保证授权用户的高效操作。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/182084.html