如何用Excel制作登录界面(制作一个登录表单)

如何用Excel制作登录界面(制作一个登录表单)

编码文章call10242025-07-24 17:20:514A+A-

步骤1:创建用户数据库

  1. 新建工作表命名为"UserDB"
  2. 设置表头:
  3. A1: Username
  4. B1: Password
  5. C1: Permission (权限等级,如1-普通用户,2-管理员)
  6. 添加示例数据:
  7. UsernamePasswordPermissionuser1pass11adminadmin1232

步骤2:创建登录表单

  1. 按Alt+F11打开VBA编辑器
  2. 插入 → 用户窗体 → 命名为LoginForm
  3. 添加控件:
  4. 2个标签:用户名/密码
  5. 2个文本框:txtUser / txtPass (密码框设置PasswordChar属性为*)
  6. 2个按钮:登录(btnLogin)/取消(btnCancel)

步骤3:编写登录逻辑

' LoginForm代码
Private Sub btnLogin_Click()
    Dim user As String, pass As String
    user = Trim(txtUser.Text)
    pass = Trim(txtPass.Text)
    
    If user = "" Or pass = "" Then
        MsgBox "请输入用户名和密码!", vbExclamation
        Exit Sub
    End If
    
    Dim permission As Integer
    permission = AuthenticateUser(user, pass)
    
    If permission > 0 Then
        Unload Me
        Application.Visible = True
        ShowDashboard permission ' 根据权限显示界面
    Else
        MsgBox "无效的用户名或密码!", vbCritical
        txtPass.Text = ""
        txtPass.SetFocus
    End If
End Sub

Private Sub btnCancel_Click()
    ThisWorkbook.Close SaveChanges:=False
End Sub

步骤4:创建验证函数

' 标准模块代码
Function AuthenticateUser(user As String, pass As String) As Integer
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("UserDB")
    
    Dim lastRow As Long
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    
    For i = 2 To lastRow
        If LCase(ws.Cells(i, 1).Value) = LCase(user) Then
            If ws.Cells(i, 2).Value = pass Then
                AuthenticateUser = ws.Cells(i, 3).Value
                Exit Function
            End If
        End If
    Next i
    
    AuthenticateUser = 0 ' 验证失败
End Function

步骤5:权限控制实现

Sub ShowDashboard(permission As Integer)
    ' 隐藏所有工作表
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
        ws.Visible = xlSheetVeryHidden
    Next
    
    ' 根据权限显示界面
    Select Case permission
        Case 1 ' 普通用户
            Sheets("UserDashboard").Visible = xlSheetVisible
            Application.Caption = "普通用户模式"
        Case 2 ' 管理员
            Sheets("AdminDashboard").Visible = xlSheetVisible
            Application.Caption = "管理员模式"
    End Select
    
    ' 禁用开发者权限
    Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"
End Sub

步骤6:创建工作表界面

  1. 创建两个工作表:
  2. "UserDashboard"(普通用户界面)
  3. "AdminDashboard"(管理员界面)
  4. 在管理员界面添加敏感操作(如添加用户按钮)

步骤7:添加用户管理功能

' 管理员模块代码
Sub AddNewUser()
    Dim user As String, pass As String, perm As Integer
    user = InputBox("输入用户名:")
    pass = InputBox("输入密码:")
    perm = InputBox("权限等级 (1-用户, 2-管理员):")
    
    If user <> "" And pass <> "" Then
        Dim ws As Worksheet
        Set ws = Sheets("UserDB")
        Dim newRow As Long
        newRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row + 1
        
        ws.Cells(newRow, 1).Value = user
        ws.Cells(newRow, 2).Value = pass
        ws.Cells(newRow, 3).Value = perm
        
        MsgBox "用户添加成功!"
    End If
End Sub

步骤8:设置工作簿启动

' ThisWorkbook 代码
Private Sub Workbook_Open()
    Application.Visible = False ' 隐藏Excel界面
    LoginForm.Show ' 显示登录窗体
    
    ' 保护用户数据库
    Sheets("UserDB").Visible = xlSheetVeryHidden
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    ' 关闭时恢复设置
    Application.Visible = True
    Application.Caption = Empty
    Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",True)"
End Sub

安全增强措施:

  1. 加密密码:
' 在写入数据库前加密
ws.Cells(newRow, 2).Value = Base64Encode(pass)

' 验证时解密
Function Base64Decode(ByVal strData As String) As String
    ' 添加Base64编解码函数
End Function
  1. 锁定VBA工程:
  2. 工具 → VBAProject属性 → 保护 → 勾选"查看时锁定工程"
  3. 保护工作表:
Sheets("UserDB").Protect Password:="yourStrongPassword", _
    UserInterfaceOnly:=True

使用说明:

  1. 工作簿打开时自动显示登录界面
  2. 输入UserDB中的有效凭据
  3. 系统根据权限级别:
  4. 普通用户:仅查看数据
  5. 管理员:可管理用户和所有数据
  6. 关闭工作簿时自动恢复Excel界面

注意事项

在实际应用中应使用更安全的密码存储方式(如哈希加盐)

定期备份用户数据库

为管理员界面添加操作日志功能

使用错误处理增强稳定性

这个方案实现了:

  • 分离的数据库存储
  • 基于角色的权限控制
  • 界面自动切换
  • 基础安全防护
  • 用户管理功能
点击这里复制本文地址 以上内容由文彬编程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

文彬编程网 © All Rights Reserved.  蜀ICP备2024111239号-4