编译器错误:用户定义类型没有定义
我得到这一行的编译时错误“未定义的用户定义类型”:编译器错误:用户定义类型没有定义
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
我忘了添加引用 “Microsoft ActiveX数据对象2.5库”:
工具>参考>选中该复选框中的“Microsoft ActiveX数据前方的物体2.5库”
您可以使用后期绑定:
Dim cn As Object
将使问题消失。当执行Set cn = CreateObject("ADODB.Connection")
语句时,VBA将自动生成参考。
@让 - FrançoisCorbett似乎像我能得到这个工作的唯一方法是通过添加参考...可能我不明白你的解决方案。 – Shrout1 2013-09-06 18:26:18
在这一端测试过'Dim cn As Object:Set cn = CreateObject(“ADODB.Connection”)',可以正常工作。你真的得到了和以前一样的错误吗? – 2015-04-19 18:28:39
我试着添加Microsoft ActiveX Data Objects 2.5和2.8库,但没有成功。但是,当我尝试创建像下面这样的新对象时,它工作。
Set cn = CreateObject("ADODB.Connection")
这不提供任何新的解决方案。这已经在其他答案中说过了。这种方法称为后期绑定。 – ZygD 2015-09-26 14:52:11
的可能的复制[“用户定义类型未定义”错误(http://stackoverflow.com/questions/24261557/user-defined-type-not-defined-error) – 2016-12-29 08:35:33