Excel VBA用户定义types未定义 –

我试图创build一个Excel程序,可以使用VBA在同一个文件中从sheet1到sheet2的数据。 但是当我宣布ADODB时,它不会出现在下拉列表中。 当我尝试运行子我得到'用户定义types未定义'的错误。 任何人都可以请与我分享任何修复?

代码如下:

Sub testsql() 'declare variable Dim objMyConn As ADODB.Connection Dim objMyCmd As ADODB.Command Dim objMyRecordSet As ADODB.Recordset Set objMyConn = New ADODB.Connection Set objMyCmd = New ADODB.Command Set objMyRecordSet = New ADODB.Recordset 'open connection objMyConn.connectionstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & wbWorkBook & ";Extended Properties=Excel 8.0;" objMyConn.Open 'set and execute command Set objMyCmd.activeconnection = objMyConn objMyCmd.CommandText = "select top 10000 [Die No], Description from DieMaintenanceEntry" objMyCmd.CommandType = adcmdtext 'open recordset Set objMyRecordSet.Source = objMyCmd objMyRecordSet.Open 'copy data to excel ActiveWorkbook.Sheets("Display-Die Maintenance Summary").ActiveSheet.Range("A5").CopyFromRecordset (objMyRecordSet) End Sub 

你可以用两种方法解决这个问题:

  1. 早期的绑定(如你的代码所示)
    你需要做的是参考正确的Microsoft ActiveX Data Object 。 对于我的版本,它是6.1

    参考资料库

  2. 使用后期绑定(无需引用库)

     Dim objMyConn As Object '/* Declare object type variable */ Dim objMyCmd As Object Dim objMyRecordset As Object '/* Set using create object */ Set objMyConn = CreateObject("ADODB.Connection") Set objMyCmd = CreateObject("ADODB.Command") Set objMyRecordset = CreateObject("ADODB.Recordset") 

至于使用哪个,我只能给个build议。 在开发过程中,使用Early Binding来利用Intellisense 。 在部署中,更改为“ Late Binding以克服版本兼容性问题。