我正在尝试创建一个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
您可以通过两种方式解决此问题:
早期绑定(如您的代码所提示)
,您需要参考正确的Microsoft ActiveX Data Object
。对于我的版本,它是6.1
。
使用后期绑定(无需参考库)
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")
至于使用哪个,我只能提出建议。在开发过程中,可利用Early Binding
来利用Intellisense
。在部署时,进行更改以Late Binding
克服版本兼容性问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句