新しい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。
VBAコードで、新しい接続文字列のbeginningにODBC;
を追加します。
.Connection = "ODBC;SERVER=myserveraddress;UID=SYSTEM;Trusted_Connection=Yes;APP=2007 Microsoft Office system;WSID=SYSTEM;DATABASE=myDBname;"