0

MSクエリを使用して、さまざまなデータベースからデータを取得し、管理メトリックを作成します(つまり、Excel内で、[データ]...[外部データのインポート]...[新しいデータベースクエリ]に移動します)。SQLクエリとパラメータ(主にconn文字列)は、Excelによってスプレッドシート内に自動的に保存されます。

ただし、最近、データベースの1つを新しいサーバーに移動しました。その結果、Excelはデータを更新しようとすると、新しいODBC接続を要求しますが、新しい値を受け入れません。新しいクエリを正常に作成できるため、ODBC接続は正しく設定されていますが、クエリを変更することはできません。

これらの設定内でプログラムまたはその他の方法でIPアドレスを変更する方法はありますか?16進エディターでxlsファイルを変更しようとしましたが(IPアドレスはそこに表示されています)、ブックが破損していると表示されます。

4

1 に答える 1

3

クエリの接続文字列を変更する必要がある場合、このマクロはアクティブなブック内のすべてのクエリの接続文字列を変更します(変更するブックにコードを保存する必要はありません)。

2つのサンプル接続文字列を含めます。1つはdsnを提供し、もう1つはサーバー/データベースを提供します。新しいクエリを作成するときにDSNに問題がない場合は、最初にDSNを試してください。SQL Serverを使用する場合は、SQLServerのバージョンを調整します。

また、1つは標準のセキュリティ(uid、pwd)を持ち、もう1つはWindowsベースのセキュリティ(信頼できる接続)を使用します。必要に応じて混ぜ合わせます。

Sub ChangeAddress()

Dim qt As QueryTable
Dim wks As Worksheet

Const strNEW_CONN_DSN As String = "ODBC;DSN=MyDSN;Description=MyDescription;UID=myid;PWD=mypwd;"

Const strNEW_CONN_SQL as String = "Driver={SQL Server Native Client 10.0};Server=myServerAddress;Database=myDB;Trusted_Connection=yes;"

For Each wks In ActiveWorkbook.Worksheets
    For Each qt In wks.QueryTables
        qt.Connection = strNEW_CONN_DSN
    Next qt
Next wks
End Sub
于 2009-10-19T09:29:57.987 に答える