当前位置: 首页 > news >正文

VBA高级应用30例应用4:打开工作薄时进行身份验证

《VBA高级应用30例》(版权10178985),是我推出的第十套教程,教程是专门针对高级学员在学习VBA过程中提高路途上的案例展开,这套教程案例与理论结合,紧贴“实战”,并做“战术总结”,以便大家能很好的应用。教程的目的是要求大家在实际工作中分发VBA程序,写好的程序可以升级。本套教程共三册三十个专题,本讲的内容是:VBA高级应用30例应用4:打开工作薄时进行身份验证

分享成果,随喜正能量】108 不要因为他人的恶行,而丢掉自己的善良,因为他的因果由他在承担,但是你的善恶你要负责.。

应用4 工作簿打开时阻止事件的自动运行

作为开发人员,需要经常打开包含VBA的文件,并运行代码。但并不总是这样,有时我们还想阻止某些代码的运行,最为典型的是工作簿打开事件中的某些特殊命令,如身份验证部分,我们在某些时候是希望阻止工作簿打开时自动运行的。这篇应用就是向大家展示如何实现这一点。为什么要这么做呢?通常,如果在自己的文件中使用了工作簿自动打开事件,而文件仍在开发中,自动运行Open事件可能需要一段时间才能运行代码,或者在开发文件的程序书写过程中,我们不希望在此时配置项目。

在实际应用中,我们要求用户在打开文件事件中处理某些任务时,一定要启动宏。如果没有设置启用宏,这些事件处理程序会保持禁用状态,这是我们不希望看到的。在这篇应用中,我会同时给大家展示如果用户禁用宏,将不能顺利处理工作簿的方法。但要注意,不信任的宏文件要小心处理。

1 打开工作薄时进行身份验证

我们首先建立一个示例文件,在这个示例文件中我们要求用户在打开文件时进行身份验证。我们看下面的代码:

Private Sub Workbook_Open()

Dim sh As Worksheet

Dim sheet As Worksheet

Set sheet = ActiveWorkbook.Sheets.Add(After:=ActiveWorkbook.Worksheets(ActiveWorkbook.Worksheets.Count))

sheet.Select

UU = InputBox("请输入您的权限密码", "文件打开确认")

If UU <> "1234" Then

ThisWorkbook.Close (False)

Else

Application.DisplayAlerts = False

sheet.Delete

Application.DisplayAlerts = True

End If

End Sub

代码讲解:以上代码要求用户在打开工作簿进入文件时输入身份密码,代码中给出的密码是“1234”。

1)Set sheet = ActiveWorkbook.Sheets.Add(After:=ActiveWorkbook.Worksheets(Active Workbook.Worksheets.Count))

sheet.Select

以上代码在打开代码工作簿时首先要添加一个工作表,添加的工作表位于所有工作表之后,添加完成后,这个新添加的工作表处于活动状态。

2)UU = InputBox("请输入您的权限密码", "文件打开确认")

以上代码要求用户输入文件打开的验证密码。用户输入后的密码保存在变量UU中。

3)If UU <> "1234" Then

ThisWorkbook.Close (False)

以上代码表示:如果用户输入的代码不对,将关闭工作簿,关闭时不保存。

4)Else

Application.DisplayAlerts = False

sheet.Delete

Application.DisplayAlerts = True

End If

以上代码表示,当密码正确时会删除刚才添加的工作表,删除前会关闭警报,删除后会打开警报。

代码截图:

我们看一下程序的运行效果:

密码错误时,会关闭工作簿:

密码正确时,会正常打开文件:

本讲内容参考程序文件:

  • 高级应用04_1.XLSM
  • 高级应用04_2.XLSM
  • 高级应用04_3.XLSM
  • 高级应用04_4.XLSM
  • 高级应用04_5.XLSM
  • 高级应用04_6.XLSM

我20多年的VBA实践经验,全部浓缩在下面的各个教程中:



相关文章:

  • 记录vscode连接不上wsl子系统下ubuntu18.04问题解决方法
  • LeetCode 3375 题解
  • LibreOffice 自动化操作目录
  • 常见算法模板总结
  • 高压安全新挑战:新能源汽车三电系统绝缘材料的漏电流与击穿特性研究
  • 如何判断家里的宽带是否有公网IPv4或公网IPv6
  • 14 GIS地类面积统计终极指南:3步速通「栅格VS矢量」双线操作
  • 洛谷 P11962:[GESP202503 六级] 树上漫步 ← dfs + 邻接表
  • 从静态绑定驱动模型到现代设备模型 —— 一次驱动架构的进化之旅
  • 第一讲、IsaacLab创建空场景
  • 【Rust开发】Rust快速入门,开发出Rust的第一个Hello World
  • 【Hadoop入门】Hadoop生态之Hive简介
  • Pycharm常用快捷键总结
  • pytorch小记(十七):PyTorch 中的 `expand` 与 `repeat`:详解广播机制与复制行为(附详细示例)
  • [定位器]晶艺LA1823,4.5V~100V, 3.5A,替换MP9487,MP9486A,启烨科技
  • 2025.4.9总结
  • c++比较器——priority_queue用 ; unordered_map 自定义哈希函数
  • 基于Redis实现短信防轰炸的Java解决方案
  • 唯一分解定理
  • 系统与网络安全------网络通信原理(4)
  • app网站开发的特点/班级优化大师网页版
  • 鄂城区人民政府门户网站/快手作品免费推广软件
  • 嘉兴模板建站代理/品牌广告
  • 建网站需要什么编程技术/免费的建站平台
  • 如何制作网站网页/网络推广方式有哪些
  • 网站做seo需要哪些准备/今日特大新闻