Ошибка компилятора: пользовательские типы не определены - PullRequest
24 голосов
/ 18 марта 2011

Я получаю ошибку во время компиляции "Пользовательские типы не определены" в этой строке:

Dim cn As ADODB.Connection

Что может быть не так?

Код:

Sub test()

    Dim cn As ADODB.Connection

    'Not the best way to get the name, just convenient for notes

    strFile = Workbooks(1).FullName
    strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFile & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"
    Set cn = CreateObject("ADODB.Connection")
    'For this to work, you must create a DSN and use the name in place of

    'DSNName

    'strSQL = "INSERT INTO [ODBC;DSN=DSNName;].NameOfMySQLTable " & "Select AnyField As NameOfMySQLField FROM [Sheet1$];"
     strSQL = "SELECT F1 FROM [Sheet1$];"
     cn.Execute strSQL
End Sub

Ответы [ 3 ]

48 голосов
/ 18 марта 2011

Я забыл добавить ссылку на «Microsoft ActiveX Data Objects 2.5 Library»: эта ссылка необходима для early binding.

Как получить эту ссылку:

Инструменты> Ссылки> Установите флажок перед «Библиотека данных Microsoft ActiveX 2.5»

Другие работающие библиотеки:

Объекты данных Microsoft ActiveX2.6 Библиотека

Объекты данных Microsoft ActiveX 2.7 Библиотека

Объекты данных Microsoft ActiveX 2.8 Библиотека

Объекты данных Microsoft ActiveX 6.1 Библиотека

12 голосов
/ 19 марта 2011

Вы можете использовать позднюю привязку:

Dim cn As Object

устранит проблему.VBA создаст ссылку автоматически при выполнении оператора Set cn = CreateObject("ADODB.Connection").

0 голосов
/ 26 сентября 2015

Я пытался добавить библиотеку Microsoft ActiveX Data Objects 2.5 и 2.8, но это не сработало.Но когда я попытался создать новый объект, как показано ниже, это сработало.

Set cn = CreateObject("ADODB.Connection")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...