编译器错误:未定义用户定义的类型

时间:2011-03-18 08:27:35

标签: excel vba excel-vba

我在这一行得到了编译时错误“未定义的用户定义类型”:

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 个答案:

答案 0 :(得分:46)

我忘记添加对“Microsoft ActiveX Data Objects 2.5 Library”的引用:early binding需要此引用。

  

如何获得该参考:

工具>参考文献>选中“Microsoft ActiveX Data Objects 2.5 Library”前面的复选框

  

其他有效的库包括:

Microsoft ActiveX数据对象2.6库

Microsoft ActiveX数据对象2.7库

Microsoft ActiveX数据对象2.8库

Microsoft ActiveX数据对象6.1库

答案 1 :(得分:12)

您可以使用后期绑定:

Dim cn As Object

会让问题消失。执行Set cn = CreateObject("ADODB.Connection")语句时,VBA将自动生成引用。

答案 2 :(得分:-4)

我尝试添加Microsoft ActiveX Data Objects 2.5和2.8库,但它没有成功。但是当我尝试创建像下面这样的新对象时,它起作用了。

Set cn = CreateObject("ADODB.Connection")