簡體   English   中英

Excel VBA用戶定義的類型未定義 -

[英]Excel VBA user defined type not defined-

我正在嘗試創建一個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. 早期綁定(由您的代碼暗示)
    您需要做的是引用正確的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") 

至於使用哪個,我只能提出建議。 在開發過程中,使用Early Binding可以利用Intellisense 在部署時,更改為Late Binding以克服版本兼容性問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM