Excel VBA 禁止存盘保护机制代码解析

代码功能概述

以下VBA代码实现了一个Excel工作簿的保护机制,当用户尝试保存文件时会要求输入密码,只有输入正确密码"123456"才能成功保存。

完整代码及详细注释

类模块代码 (类1.cls)

' 声明一个带有事件的Application对象变量
' WithEvents关键字允许该对象响应事件
Public WithEvents xlApp As Application

' WorkbookBeforeSave事件处理程序
' 在用户尝试保存工作簿时触发
Private Sub xlApp_WorkbookBeforeSave(ByVal Wb As Workbook, _
                                    ByVal SaveAsUI As Boolean, _
                                    Cancel As Boolean)
    
    ' 检查当前保存的是否是本工作簿
    If Wb Is ThisWorkbook Then
        ' 弹出输入框要求用户输入密码
        ' 如果输入不等于"123456",则取消保存操作
        If Application.InputBox("请勿修改本文件!") <> "123456" Then
            ' 设置Cancel为True以阻止保存
            Cancel = True
        End If
    End If
End Sub

标准模块代码 (模块1.bas)

' 声明一个公共变量,作为类1的实例
' 这将用于在整个应用程序中保持事件监听
Public cPub As New 类1

' Auto_Open宏
' 在工作簿打开时自动执行
Sub Auto_Open()
    ' 将当前Excel应用程序对象赋给cPub的xlApp属性
    ' 这将激活类模块中定义的事件处理
    Set cPub.xlApp = Application
End Sub

代码工作机制说明

  1. 初始化阶段

    • 工作簿打开时自动执行Auto_Open
    • 将Excel应用程序对象赋给cPub.xlApp,建立事件监听
  2. 保存拦截阶段

    • 当用户尝试保存文件时触发WorkbookBeforeSave事件
    • 检查保存的是否是当前工作簿
    • 弹出密码输入框要求验证
    • 密码验证失败则取消保存操作
  3. 密码验证

    • 正确密码硬编码为"123456"
    • 使用简单的输入框进行验证

安全注意事项

  1. 此保护方式仅能阻止普通用户保存修改
  2. 有经验的用户可以通过以下方式绕过:
    • 禁用宏执行
    • 直接查看和修改VBA代码
    • 使用其他程序读取文件内容
  3. 如需更强保护,应考虑:
    • 使用Excel内置密码保护
    • 加密工作簿
    • 将敏感数据存储在更安全的系统中

此代码适合用于防止意外修改或作为多层保护中的一层,但不适合作为唯一的安全措施。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

課代表

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值