我在excel宏中存储了以下内容: -
Sub Sales()
Dim StrSQl As String
Con = "Provider=IBMDA400;Data Source=192.168.2.2;User Id=boss;Password=1we56"
Set Db = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.recordset")
Db.connectionSTring = Con
Db.Open
StrSQl = "select myuc, sum (myac) as Amount from myabc.myqwerty where mydt >= 20100101 and mydt <= 20100831 group by (mycl)"
rs.Open StrSQl, Db, 3, 3
Sheet1.Cells(10, 1).CopyFromRecordset rs
rs.Close
Set rs = Nothing
Set cn = Nothing
End Sub
我希望屏蔽上述用户ID&amp;密码即。 User Id=****;Password=*****
作为安全的一部分。
这可能吗?
答案 0 :(得分:11)
您最安全的选择 - 无论用户是否需要输入密码 - 都是为了保护您的整个宏代码
如果没有编写COM
插件,这将是安全的,因为您的代码将获得。请注意,有些产品可以破解 VBA代码
答案 1 :(得分:2)
Con = "Provider=IBMDA400;Data Source=192.168.2.2;User Id=boss;Password=1we56"
AARRGGHH !!你在想什么?
这是交易。没有多少加密可以帮助你在这里,因为如果Excel本身可以解密数据(它可以,否则连接永远不会),那么恶意类型也可以做到。
正确的方法是向用户询问用户ID和密码,并使用该信息动态构建连接字符串。
这样,敏感信息只存在于用户的头部和(暂时)存在于他们正在使用的机器上(无论如何可能是他们的机器)。它不在任何人可以访问的Excel电子表格中。
而且,最重要的是,功能ID(在不同用户之间共享)几乎总是一个坏主意,因为它使审计成为一场噩梦。