Excel / SQL - 如何在不刷新的情况下更改连接字符串?

时间:2017-09-15 12:57:18

标签: excel

我正从我的客户远程工作,并拥有一个带有SQL连接的Excel电子表格来从数据库中提取数据。在家工作时,我可以在我的本地测试数据库上测试它。一切正常,所以我想通过电子邮件将电子表格发送给我的客户,但需要先将其更改为连接字符串。但是,当我这样做时,它会尝试刷新,因为无法看到他们的服务器而失败,唯一的选择是取消哪个不保存新的连接字符串。

我已查找答案并尝试禁用刷新但无法找到解决方案。我试图避免宏,但如果这是最好的解决方案,将改变我的观点。 screenshot of connection string set up

1 个答案:

答案 0 :(得分:0)

我正在回答我唯一的问题,因为几年过去了,我学到了很多。我最终找到时间让 ADODB 连接在 VBA 中工作。它非常简单,StackOverflow 上有很多答案,例如:Compiler Error: User-defined types not defined

如果需要,我可以使用 VBA 代码构建连接字符串并将服务器和数据库名称放在工作表中。这让我可以轻松地在我的测试系统和我客户的系统之间进行更改。

Dim Cn As ADODB.Connection 

Server_Name = Sheets("Server Connection").Range("B1") ' Enter your server name here
Database_Name = Sheets("Server Connection").Range("B2") ' Enter your database name here

Set Cn = New ADODB.Connection
Cn.Open "Driver={SQL Server};Server=" & Server_Name & ";Database=" & Database_Name & ";Trusted_Connection=yes;"

Debug.Print SQL_string   ' SQL_string contains as string of the query I want to run
rs.Open SQL_string, Cn, adOpenStatic

' Dump to spreadsheet
With output_start        ' output_start is defined as a range where I want the output to go
     .CopyFromRecordset rs
End With

 ' Tidy up by closing down connection
rs.Close
Set rs = Nothing
Cn.Close
Set Cn = Nothing

要记住的主要事情是在 VBA 工具 > 参考中勾选 Microsoft ActiveXData Objects 2.x 库。