VBA学习(19):使用文本文件隐藏登录敏感信息

经常看到很多人会将他们的登录名/密码直接存储在VBA代码中甚至工作表中,这是很不安全的一种处理方式。例如,下面使用VBA来自动登录公司数据库的代码:

'作用:使用Excel VBA登录到公司数据库
Sub DatabaseLogin()
    Dim ID_List As Variant
    Dim Username_List As Variant
    Dim Passoword_List As Variant
    Dim Username As String
    Dim Password As String
    Dim x As Integer
 
    '团队成员的登录信息
    'ID号
    ID_List = Array("x302918","x294832", "x392490")
    '用户名
    Username_List = Array("JohnSmith","JasonBorne", "FelixHarp")
    '密码
    Passoword_List =Array("ILuvMommy5", "HulkMan123","IneedSleep665")
 
    '测试团队成员的ID
    For x = LBound(ID_List) To UBound(ID_List)
        If Environ("USERNAME") =ID_List(x) Then
            Username = Username_List(x)
            Password = Username_List(x)
            Exit For
        End If
    Next x
 
    '未识别用户,必须手工登录
    If Username = "" Then
        Username = Application.InputBox("输入用户名")
        Password = Application.InputBox("输入密码")
    End If
 
    '登录到数据库
    AccessDatabase Username, Password,"CustomerDatabase"
End Sub

除非是自已单独在个人计算机上使用,最好不要采用上面的代码。thespreadsheetguru.com展示了一种简单的方法,能够在运行时将用户名和密码带入VBA,而不会在VBA代码或Excel工作表中暴露这些敏感信息。

首先,将自已的用户名和密码保存在个人计算机上,可以将它们保存到文本文件中,如下图1所示。

你需要使用程序的所有团队用户都使用相同的文件名并将该文件放置在各自计算机的相同的位置。本例中,文件名是“个人信息.txt”,放置桌面上。这样,VBA代码将从这个文本文件中提取信息并进行处理,下面是完整的代码:

'作用:通过Excel VBA和文本文件来登录公司数据库
Sub DatabaseLogin()
    Dim Username As String
    Dim Password As String
    Dim TextFile As Integer
    Dim FilePath As String
    Dim Credentials As Variant
 
    '文本文件所在路径
    On Error Resume Next
    FilePath = Environ("USERPROFILE")& "\Desktop\个人信息.txt"
    On Error GoTo 0
 
    '确定登录信息(手工或自动从桌面文件中提取)
    If FilePath = "" Then
        Username = Application.InputBox("输入用户名")
        Password = Application.InputBox("输入密码")
    Else
        '通过Open函数确定下一个有用的文件号
        TextFile = FreeFile
   
        '打开文本文件
        Open FilePath For Input As TextFile
   
        '在数组中存储文件内容并确定登录信息
        Credentials =Split(Input(LOF(TextFile), TextFile), ",")
        Username = Credentials(0)
        Password = Credentials(1)
   
        '关闭文本文件
        Close TextFile
     End If
 
    '登录到数据库
    AccessDatabase Username, Password,"CustomerDatabase"
End Sub

代码先查找桌面上指定的文本文件,使用Environ函数提取默认的路径,可将将文本文件所在文件夹追加到该路径后面以创建完整的路径。接着,IF语句判断是手工输入用户名和密码,还是由程序自已处理。如果在指定的路径中找到了指定的文本文件,则由程序自已处理。Split函数将文本字符串通过分隔符拆分,并存放在数组中,其起始元素索引值为0。也就是说,数组中的第一个元素将存放用户名,第二个存放密码。最后,将这两个元素传递给登录语句的参数,实现数据库自动登录。

技术交流,软件开发,欢迎微信沟通:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

xwLink1996

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

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

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

打赏作者

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

抵扣说明:

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

余额充值