web-dev-qa-db-ja.com

VBAでODBC接続文字列を設定する

新しいCommandTextをExcelスプレッドシートのODBC接続に送信し、クエリに関連付けられた結果のテーブルを更新するマクロを作成しました。これは正常に機能していますが、気づきました。マクロを実行するたびに、接続文字列が自分のマシンでは機能するが、他のユーザーのマシンでは機能しないデフォルト値で上書きされます。これは、自分が持っている接続ファイルが保存されていないためです。サーバーアドレスは手動で入力すると機能しますが、マクロが実行されるたびに上書きされます。

新しいCommandTextを送信すると同時に、マクロに接続文字列を書き込むだけだと思いましたが、エラーが発生しています。

私のコードは次のとおりです。

Sub NewData()

Dim lStr As String
lStr = ""
lStr = lStr & " USE myDBname; "
lStr = lStr & " WITH X AS ("
lStr = lStr & " SELECT"
lStr = lStr & " column1, column2, column3, etc"
lStr = lStr & " FROM"
lStr = lStr & " etc. etc. etc."

With ActiveWorkbook.Connections("PayoffQuery").ODBCConnection

.CommandText = lStr
.Connection = "SERVER=myserveraddress;UID=SYSTEM;Trusted_Connection=Yes;APP=2007 Microsoft Office system;WSID=SYSTEM;DATABASE=myDBname;"

End With

End Sub

.CommandTextは引き続き正常に更新されますが、.Connectionはランタイムエラー1004:アプリケーション定義またはオブジェクト定義エラーをスローします。

私がここで間違っていることについて何か考えはありますか? TIA。

5
CactusCake

VBAコードで、新しい接続文字列のbeginningODBC;を追加します。

.Connection = "ODBC;SERVER=myserveraddress;UID=SYSTEM;Trusted_Connection=Yes;APP=2007 Microsoft Office system;WSID=SYSTEM;DATABASE=myDBname;"
5
ExactaBox