创建一个包含连接信息的配置文件,然后引用该连接

时间:2018-12-06 12:18:29

标签: sql-server excel vba

我有一个Excel工作表,其中包含分配给按钮的VBA代码。

这是我的VBA代码的一部分:

Dim ConnectionStr As String
Dim sql As String

ConnectionStr = "Provider=SQLOLEDB.1;Password=ABCDEFG;User ID=xyz;Data Source=MyServer;Initial Catalog=NEW_DB"


With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array("OLEDB;" & ConnectionStr), _
    Destination:=Worksheets("Hidden").Range("$A$2")).QueryTable

       .CommandType = xlCmdSql
       .CommandText = "EXECUTE [dbo].[usp_one]"
       .SavePassword = True
       .SaveData = True
       .AdjustColumnWidth = True
       .ListObject.DisplayName = "Table_in_Hidden"
       .Refresh BackgroundQuery:=False

End With

我不想在VBA宏中显示连接字符串,因为有人可能会“窥视”它并发现我们的SQL Server密码。

似乎一种解决方案是创建一个包含连接信息的配置文件,然后在VBA宏中引用该配置文件。

1 个答案:

答案 0 :(得分:1)

无论如何,VBA必须最终获得连接的密码。无论是在连接字符串还是配置文件中。

并且连接是由Excel通过VBA建立的,因此密码(或连接字符串,配置文件等)必须与excel工作表文件一起分发。

因此,如果有人获得了excel工作表并且可以正常使用它,我认为没有一种有效的方法可以防止知道连接密码。

如果您不希望excel工作表的用户对数据库进行某些更改,则最好不要为他们分配VBA代码使用的数据库用户的相应数据库特权(如果数据库系统支持用户特权限制)