【发布时间】:2017-10-30 10:56:11
【问题描述】:
我正在尝试创建一个 Excel 程序,该程序可以使用 VBA 在同一文件中从 sheet1 获取数据到 sheet2。但是当我声明 ADODB 时,它并没有出现在下拉列表中。当我尝试运行 sub 时,出现“未定义用户定义类型”错误。任何人都可以与我分享任何修复吗?
代码如下:
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
【问题讨论】:
-
你引用了 Activex 库吗?
-
Tools-> References -> Microsoft ActiveX Data object 2.0 library勾选框点击ok
-
如果您只是在 same Excel 会话中将数据从一个工作表复制到另一个工作表,并且您没有应用排序或过滤,那么所有这些 ADO 业务可能是矫枉过正。
-
@SivaprasathV 您应该使用 6.x 版本(Windows Vista 和更高版本)。 2.8 适用于 Windows XP,不支持 2.0-2.7。
-
感谢@ThunderFrame,我通常使用 2.8 库而不知道原因,并认为这是最新的库。由于代码没有任何版本参考,我认为他可以使用最低版本并认为更高版本具有向后兼容性。