2010-11-19 147 views
1

我有以下ado連接從excel訪問,但它不起作用,我得到上述錯誤。有任何想法嗎?ADO執行 - 編譯錯誤:用戶定義類型未定義

Sub ADO_to_access() 

Dim database As New ADODB.Connection // ERROR HERE 
Dim connectionstring As String 
Dim NewSet As Recordset 
Dim CurrentSheet As Worksheet 

Set CurrentSheet = ActiveSheet 
Set objaccess = Nothing 

connectionstring = "Provider=Microsoft.Jet.OLEDB.4.0; " & _ 
     "Data Source=C:\Users\Carlos\Desktop\VBA - CW - Database.mdb;" 

database.Open connectionstring 

' ************* MEN 
Set NewSet = New ADODB.Recordset 
NewSet.Open "Mens_Dept_Data", database, adOpenKeyset, adLockOptimistic, adCmdTable 

x = 6 
Do While Len(Range("P" & x).Formula) > 0 
With NewSet 
.AddNew 

.Fields("Irina").Value = CurrentSheet.Range("P" & x).Value 
.Fields("Thomas").Value = CurrentSheet.Range("Q" & x).Value 
.Fields("Jackie").Value = CurrentSheet.Range("R" & x).Value 

.Update 
End With 
x = x + 1 
Loop 

NewSet.Close 
database.Close 

End Sub 
+0

順便說一句,在SO上的代碼格式有一個錯誤。爲了避免這種情況,請在評論結束時「關閉」評論: -/ – 2010-11-19 14:41:32

回答

6

您是否參考了adodb庫? (從VBE,選擇工具,參考資料)

+0

不,我沒有,我必須選擇哪一個? – Carlos 2010-11-19 14:34:12

+1

Microsoft ADO分機6.0用於DDL和安全性? – Carlos 2010-11-19 14:37:39

+1

Microsoft ActiveX數據對象x.x通常有很多。選擇一個你需要的,如果你不知道,選擇最近的。 – 2010-11-19 14:38:24

0

我相信,這個問題可能會在這些類型:

adOpenKeyset, adLockOptimistic, adCmdTable 

嘗試定義它們如下:

編輯
var adOpenForwardOnly = 0, adOpenKeyset = 1, adOpenDynamic = 2, adOpenStatic = 3; //CursorType Values 
var adLockReadOnly = 1, adLockPessimistic = 2, adLockOptimistic = 3, adLockBatchOptimistic = 4; //LockTypeEnum Values 
var adStateClosed = 0, adStateOpen = 1, adStateConnecting = 2, adStateExecuting = 4; //ObjectStateEnum Values 
var adUseServer = 2, adUseClient = 3 //CursorLocationEnum Values 
var adCmdTable = 2 //CommandTypeEnum Values 

後:

對不起,這是針對JScrip方言的,但我相信你可以將它改寫爲VBScript。 :)

+1

也許你沒有注意到OP中的「錯誤」? – Fionnuala 2010-11-19 14:40:37

+0

的確,謝謝! – Wodzu 2010-11-19 14:44:53

相關問題