1

大家下午好,

我一直在寻找各种方法来更改/更新工作簿中的数据连接字符串以仅更新服务器名称并保持字符串的其他部分不变。

基本上我们已经迁移了服务器并且服务器名称发生了变化,现在我们有许多需要更新的报告。有些连接到不同的数据库时有多个连接。

我找到了一篇有用的文章,但这用一个全新的字符串替换了所有数据连接的字符串(由于数据库不同,这不起作用) excel-macro-to-change-external-data-query-connections-eg-point-从一个数据

有没有人必须经历这个过程并找到一种轻松更新连接字符串的方法?

亲切的问候

4

2 回答 2

3

假设数据库名称没有改变,而只是服务器,下面的内容会为你工作。未测试

Sub ChangeAllConnections()

    Dim q As QueryTable, w As Worksheet, oldserverName As String, newServerName  As String
    Dim con As Variant

    oldserverName = "onlsrvr" 'Change here
    newServerName = "newsrvr" ' change here

    For Each w In ThisWorkbook.Worksheets
      For Each q In w.QueryTables
        q.Connection = Replace(q.Connection, oldserverName, newServerName)
      Next
    Next

    On Error Resume Next
     For Each con In ThisWorkbook.Connections
        con.ODBCConnection.Connection = Replace(con.ODBCConnection.Connection, oldserverName, newServerName)
        con.OLEDBConnection.Connection = Replace(con.OLEDBConnection.Connection, oldserverName, newServerName)
      Next
    On Error GoTo 0
End Sub
于 2015-07-08T15:10:49.323 回答
1

我会考虑将这样的内容放在 sameNameAsWorkbook.ini 文件中。将文件保存在与工作簿相同的位置。然后让您的代码读取 ini 文件并以这种方式建立连接。然后,如果需要更改,您可以非常轻松地在一处更改。

于 2015-07-08T15:11:57.293 回答