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实践经验,全部浓缩在下面的各个教程中: