excel做成软件界面的方法(vba做excel窗体录入教程)

工作中有时需要对发出的Excel文件进行加密操作,避免文件中重要信息被不相关的人员获取。

提到Excel工作簿加密,小伙伴们可能马上会想到这样做:文件——>另存为——>工具——>常规选项——>设置打开密码。

excel做成软件界面的方法(vba做excel窗体录入教程)

那么,除了这种自带的工作簿加密方式,有没有更酷一些的操作呢?今天我给大家分享一个高级点的,设置用户窗体登录界面。效果如下:

怎么样,相对于自带的加密功能,是不是逼格立马高了许多。更重要的是,这个登录界面的背景图片和文字内容是可以自定义的。首次与用户交互便与众不同,让其有继续探索下去的兴趣。

请观看视频(第一次录制原声视频,哈哈^_^)

制作步骤:

01

制作用户窗体基础界面

02

为命令按钮赋宏

为宏按钮编写VBA代码,以下五段代码功能分别为:

判断输入的用户名和密码是否正确;

修改用户名;

修改密码;

禁止用户强制关闭登录窗体;

退出用户窗体界面;

PrivateSubCmdOk_Click()’单击”确定”按钮的时候执行过程 ‘Application.ScreenUpdating = False ‘关闭屏幕更新 Static I As Integer ‘声明一个变量 ‘判断用户名和密码是否输入正确 If User.Value = Sheets(“用户名密码”).Range(“A2”) & “” And Password.Value = Sheets(“用户名密码”).Range(“B2”) & “” Then Unload Me ‘关闭登录窗体 Application.Visible = True ‘显示Excel界面 Else I = I 1 ‘密码或用户名输入错误一次,变量i加1 If I = 3 Then ‘如果输错三次执行下面的语句 MsgBox “对不起,你无权打开工作薄!”, vbInformation, “提示” ThisWorkbook.Close savechanges:=False ‘关闭当前工作薄,不保存更改 Else ‘如果输错不满三次,执行下面的语句 MsgBox “输入错误,你还有” & (3 – I) & “次输入机会。”, vbExclamation, “提示” User.Value = “” ‘清除文字框中的用户名 Password.Value = “” ‘清除文字框中的密码 End If End If ‘Application.ScreenUpdating = True ‘开启屏幕更新End SubPrivate Sub UserSet_Click() ‘单击修改用户名按钮时运行过程 Dim old As String, new1 As String, new2 As String old = InputBox(“请输入原用户名:”, “提示”) new1 = InputBox(“请输入新用户名:”, “提示:请在新用户名前后分别加上””英文双引号”) new2 = InputBox(“请再次输入新用户名:”, “提示:请在新用户名前后分别加上””英文双引号”) If old <> “” And new1 <> “” Then ‘判断输入的用户名是否为空 ‘判断新旧用户名是否输入正确 If old = Sheets(“用户名密码”).Range(“A2”) And new1 = new2 Then Sheets(“用户名密码”).Range(“A2”) = new1 ThisWorkbook.Save ‘保存更改 MsgBox “用户名修改完成,下次登录请使用新用户名!”, vbInformation, “提示” Else MsgBox “输入错误,修改没有完成!”, vbCritical, “错误” End If Else MsgBox “用户名不能为空!”, vbCritical, “错误” End IfEndSubPrivate Sub PasswordSet_Click() ‘当单击更改密码按钮时运行过程 Dim old As String, new1 As String, new2 As String old = InputBox(“请输入原密码:”, “提示:请在新密码前后分别加上””英文双引号”) new1 = InputBox(“请输入新密码:”, “提示:请在新密码前后分别加上””英文双引号”) new2 = InputBox(“请再次输入新密码:”, “提示”) If old <> “” And new1 <> “” Then ‘判断输入的密码是否为空 ‘判断新旧密码是否输入正确 If old = Sheets(“用户名密码”).Range(“B2”) And new1 = new2 Then Sheets(“用户名密码”).Range(“B2”) = new1ThisWorkbook.Save’保存更改 MsgBox “密码修改完成,下次登录请使用新密码!”, vbInformation, “提示” Else MsgBox “输入错误,修改没有完成!”, vbCritical, “错误” End If Else MsgBox “密码不能为空!”, vbCritical, “错误” End IfEnd SubPrivate Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)If CloseMode = vbFormControlMenu ThenMsgBox “请输入正确的用户名和密码登录”Cancel = TrueEnd IfEnd SubPrivate Sub CmdCancel_Click() ‘当单击取消按钮时执行过程UnloadMe’关闭登录窗体 ThisWorkbook.Close savechanges:=False ‘关闭当前工作薄,不保存修改End Sub

03

设置工作表打开和关闭事件

这里主要用途是:

打开工作簿时隐藏Excel界面只显示窗体界面;

避免用户以特殊方式如Ctrl Break或Esc、Command Period等中断程序运行;

在合法登录之前,将核心数据表深度隐藏;

最终目的是让用户登录窗体能切实发挥作用,避免形同虚设。

PrivateSubWorkbook_Open()Application.ScreenUpdating=False’暂停刷新屏幕’屏蔽用户以Ctrl Break(或 Esc、Command Period)方式中断程序Application.EnableCancelKey=xlDisabledApplication.Visible=FalseUserForm1.ShowDimshAsWorksheet For Each sh In Worksheets sh.Visible = xlSheetVisibleNextSheets(“数据地图”).SelectApplication.ScreenUpdating=True’恢复刷新屏幕End SubPrivate Sub Workbook_BeforeClose(Cancel As Boolean) Dim sh As Worksheet For Each sh In Worksheets If sh.Name <> “首页” Then sh.Visible = xlSheetVeryHidden Else sh.Visible = xlSheetVisible End IfNextEndSub

注:

2.为了更好地保护用户名和密码,可以借助设置单元格格式为自定义的三个英文分号”;;;”将用户名和密码隐藏,并配合工作表保护使用;

3.可以为VBA代码设置工程密码(本例密码123),以保护全部代码。

至此,大功告成!

即便如此,用此方法制作的登录窗体,其实并非绝对安全可靠。毕竟连Windows和Office都可以盗版,何况用excel开发的登录界面。但是,日常工作中用这样的方式呈现,还是可以让人耳目一新、印象深刻。

图文制作:爱上深呼吸李强

专业的职场技能充电站

发表评论

登录后才能评论