1

こんにちは。

ワークブック内のデータ接続文字列を変更/更新して、サーバー名のみを更新し、文字列の他の部分をそのまま保持するさまざまな方法を検討してきました。

基本的にサーバーを移行し、サーバー名が変更され、更新が必要なレポートが多数あります。異なるデータベースに接続するため、複数の接続を持つものもあります。

役に立つ記事を見つけましたが、これはすべてのデータ接続に対して文字列を完全に新しいものに置き換えます (データベースが異なるため機能し ません)。 1 つのデータから

このプロセスを経て、接続文字列を簡単に更新する方法を見つけた人はいますか?

敬具

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 ファイルを読み取り、その方法で接続を構築します。その後、変更する必要がある場合は、1 か所で非常に簡単に変更できます。

于 2015-07-08T15:11:57.293 に答える