服务器已移动,现在MS Excel 2003查询将无法运行

时间:2009-10-16 19:35:51

标签: excel vba ms-query

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

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

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

1 个答案:

答案 0 :(得分: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