excelperfect 经常看到很多人会将他们的登录名/密码直接存储在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所示。 图1 你需要使用程序的所有团队用户都使用相同的文件名并将该文件放置在各自计算机的相同的位置。本例中,文件名是“个人信息.txt”,放置桌面上。这样,VBA代码将从这个文本文件中提取信息并进行处理,下面是完整的代码:
代码先查找桌面上指定的文本文件,使用Environ函数提取默认的路径,可将将文本文件所在文件夹追加到该路径后面以创建完整的路径。接着,IF语句判断是手工输入用户名和密码,还是由程序自已处理。如果在指定的路径中找到了指定的文本文件,则由程序自已处理。Split函数将文本字符串通过分隔符拆分,并存放在数组中,其起始元素索引值为0。也就是说,数组中的第一个元素将存放用户名,第二个存放密码。最后,将这两个元素传递给登录语句的参数,实现数据库自动登录。 欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料。
|
|
来自: hercules028 > 《excel》