繁体   English   中英

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

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

下午好,

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

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

我发现了一篇有用的文章,但这将所有数据连接的字符串替换为一个全新的字符串(由于数据库不同而无法使用) excel-macro-to-change-external-data-query-connections-eg-point-从一个数据

是否有人必须经过此过程并找到一种轻松更新连接字符串的方法?

亲切的问候

假设数据库名称尚未更改,而只是服务器,以下将为您工作。 未测试

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文件并以这种方式建立连接。 然后,如果需要更改,则可以很容易地在一个位置进行更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM