web-dev-qa-db-ja.com

ODBC

Excelマクロを実行して、ODBCデータベースからいくつかのデータをクエリしようとしています。データベースの詳細は次のとおりです。

[〜#〜] dsn [〜#〜]sgdv[〜#〜] uid [〜#〜]l8qc1- パスワードl8qc1サーバーsgdv

データベースからデータをクエリしようとしていますが、VBAの行Connection.Open "DSN=sgdv"に対して次のようなエラーが表示されます。

実行時エラー-2147217843(80040e4d)自動化エラー

エラーを特定できません。助けてください。以下は私のコードです

Sub ReadDB()
Dim mainWorkBook As Workbook
Dim intRowCounter
Set mainWorkBook = ActiveWorkbook
intRowCounter = 2
mainWorkBook.Sheets("Sheet2").Range("A2:Z100").Clear
Set Connection = CreateObject("ADODB.Connection")
Connection.Open "DSN=sgdv"
strQuery = "SELECT * FROM DEDICT01 where DEDICT01.SER_SN='Z1E80R4C'"
Set resultSet = Connection.Execute(strQuery)
Do While Not resultSet.EOF
    mainWorkBook.Sheets("Sheet2").Range("A" & intRowCounter).Value = resultSet.Fields("DEDICT01.CUST_PARTS_NO").Value
  resultSet.movenext
Loop
resultSet.Close
End Sub

プログラムを変更しましたが、新しいコーディングは

Sub ReadDB()
Dim mainWorkBook As Workbook
Dim intRowCounter
Set mainWorkBook = ActiveWorkbook
intRowCounter = 2
mainWorkBook.Sheets("Sheet2").Range("A2:Z100").Clear
Set Connection = CreateObject("ADODB.Connection")
Connection.ConnectionString = "DSN=sgdv;UID=l8qc1;PWD=l8qc1;"
Connection.Open
strQuery = "SELECT * FROM DEDICT01 where DEDICT01.SER_SN='Z1E80R4C'"
Set resultSet = Connection.Execute(strQuery)
Do While Not resultSet.EOF
    mainWorkBook.Sheets("Sheet2").Range("A" & intRowCounter).Value = resultSet.Fields("DEDICT01.CUST_PARTS_NO").Value
  resultSet.movenext
Loop
resultSet.Close
End Sub

以前のエラーはなくなりましたが、今は行で新しいエラーが発生しています

mainWorkBook.Sheets("Sheet2").Range("A" & intRowCounter).Value = resultSet.Fields("DEDICT01.CUST_PARTS_NO").Value

エラーは

実行時エラー '3265':

アプリケーション定義またはオブジェクト定義のエラー

2
Dragonborn

問題は接続文字列です。質問でUID、パスワードなどの情報について言及しましたが、この情報はコードのどこにも表示されないことに注意してください。データベースに接続するには、接続文字列でこの情報を指定する必要があります。

次のことを試してください。

Connection.ConnectionString = "DSN=sgdv;UID=l8qc1;PWD=l8qc1;"
Connection.Open 

これが機能することを保証することはできませんが、少なくとも正しい方向に進むはずです。それが機能しない場合は、接続文字列を微調整する必要があるかもしれません。 ADODB接続と接続文字列の詳細については、次のMSDNページを参照してください。

https://msdn.Microsoft.com/en-us/library/ms807027.aspx

1
Excellll