gpt4 book ai didi

vba - Excel VBA 用户定义类型未定义-

转载 作者:行者123 更新时间:2023-12-02 10:40:36 24 4
gpt4 key购买 nike

我正在尝试创建一个 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

最佳答案

您可以通过两种方式解决此问题:

  1. 早期绑定(bind)(如代码所示)
    您需要做的是引用正确的Microsoft ActiveX 数据对象。对于我的版本,它是 6.1

    References Library

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

    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")

至于用哪个,我只能给出建议。在开发过程中,使用早期绑定(bind)可以利用Intellisense。在部署时,更改为后期绑定(bind)以克服版本兼容性问题。

关于vba - Excel VBA 用户定义类型未定义-,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44254228/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com