2009-10-16 31 views
0

我們使用MS Query從各種數據庫檢索數據來創建管理指標(即在Excel中,轉到數據...導入外部數據...新數據庫查詢) 。 SQL查詢和參數(主要是conn字符串)由Excel自動存儲在電子表格中。服務器移動,現在MS Excel 2003查詢將不起作用

但是,我們最近將我們的一個數據庫移到了新的服務器上。因此,Excel在嘗試刷新數據時會提示我們提供新的ODBC連接,但不會接受新值。我們可以創建新的查詢,因此ODBC連接設置正確,但我們無法更改任何查詢。

有沒有辦法以編程方式或以其他方式更改這些設置中的IP地址?我嘗試在十六進制編輯器中更改xls文件(IP地址在那裏可見),但它表示工作簿已損壞。

回答

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 
+0

這工作,thx很多! – Andrew 2009-10-19 18:29:01

+0

該問題指定Excel 2003,但對於任何使用Excel 2007的用戶,此代碼不起作用。在2007年,您必須更改ActiveWorkbook.Connections.ODBCConnection.Connection – dendarii 2009-10-21 08:18:23

相關問題