0

我们使用 MS Query 从各种数据库中检索数据以创建管理指标(即在 Excel 中,转到数据...导入外部数据...新数据库查询)。SQL 查询和参数(主要是 conn 字符串)由 Excel 自动存储在电子表格中。

但是,我们最近将其中一个数据库移到了新服务器上。因此,Excel 在尝试刷新数据时会提示我们建立新的 ODBC 连接,但它不会接受新值。我们可以很好地创建新查询,因此 ODBC 连接设置正确,但我们无法更改任何查询。

有没有办法以编程方式或以其他方式更改这些设置中的 IP 地址?我尝试在十六进制编辑器中更改 xls 文件(IP 地址在那里可见),但它随后说工作簿已损坏。

4

1 回答 1

3

如果您需要更改查询的连接字符串,此宏将为活动工作簿中的所有查询更改它(您不必将代码存储在要更改的工作簿中)。

我包括两个示例连接字符串 - 一个提供 dsn,一个提供服务器/数据库。如果在创建新查询时您的 DSN 很好,请先尝试 DSN。如果您使用该版本,请调整 SQL Server 版本。

此外,一种具有标准安全性(uid、pwd),另一种使用基于 Windows 的安全性(受信任的连接)。酌情混合搭配。

Sub ChangeAddress()

Dim qt As QueryTable
Dim wks As Worksheet

Const strNEW_CONN_DSN As String = "ODBC;DSN=MyDSN;Description=MyDescription;UID=myid;PWD=mypwd;"

Const strNEW_CONN_SQL as String = "Driver={SQL Server Native Client 10.0};Server=myServerAddress;Database=myDB;Trusted_Connection=yes;"

For Each wks In ActiveWorkbook.Worksheets
    For Each qt In wks.QueryTables
        qt.Connection = strNEW_CONN_DSN
    Next qt
Next wks
End Sub
于 2009-10-19T09:29:57.987 回答