Ошибка автоматизации VBA при запросе базы данных через 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 ответа
Проблема в вашей строке подключения. Обратите внимание, что вы упомянули информацию UID, пароль и т. Д. В своем вопросе, но эта информация нигде не отображается в вашем коде. Чтобы подключиться к базе данных, вы должны указать эту информацию в строке подключения.
Попробуйте следующее:
Connection.ConnectionString = "DSN=sgdv;UID=l8qc1;PWD=l8qc1;"
Connection.Open
Я не могу гарантировать, что это сработает, но это должно, по крайней мере, привести вас на правильный путь. Если это не работает, вам может понадобиться настроить строку подключения. Дополнительные сведения о соединениях ADODB и строках соединения см. На этой странице MSDN:
Ответ зависит от того, что вы имеете в виду mainworkbook
- если это еще одна рабочая книга, вам нужно указать полный путь, например c:......
- если это текущая рабочая книга, нет необходимости выбирать тип данных. Сама текущая рабочая книга является активной рабочей книгой