Excel VBA 仅更改工作簿中所有数据连接中的服务器名称

Excel VBA change just the Server name in all data connections in a workbook

大家下午好,

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

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

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

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

亲切的问候

假设数据库名称没有改变,但只有服务器,下面的内容是否适合您。未测试

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

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