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

下午好,

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

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

我发现一篇有用的文章,但是这replace了一个全新的数据连接的string(这不工作,由于不同的数据库) excel-macro-to-change-external-data-query-connections-eg-point-从一数据

有没有人需要经过这个过程,并find一种方法来轻松更新连接string?

亲切的问候

假设数据库名称没有改变,但只是服务器,将下面的工作为你。 没有testing

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文件,并build立连接。 那么如果它需要改变,你可以很容易地在一个地方改变它。