我在这一行得到了编译时错误“未定义的用户定义类型”:
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
答案 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")