2010-11-19 10 views
1

Ich habe die folgende Ado-Verbindung von Excel zu Zugriff, aber es funktioniert nicht, bekomme den Fehler oben. Irgendwelche Ideen?ADO-Ausführung - Kompilierfehler: Benutzerdefinierter Typ nicht definiert

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

übrigens, es gibt einen Fehler in der Code-Formatierung auf SO. Um dies zu vermeiden, "schließen" Sie den Kommentar mit einem "am Ende Ihrer Kommentare: -/ –

Antwort

6

Haben Sie die Adodb-Bibliothek referenziert? (Von VBE, wählen Sie Extras, Referenzen)

+0

nein ich habe nicht, was muss ich wählen? – Carlos

+1

Microsoft ADO ext 6.0 für DDL und Sicherheit? – Carlos

+1

Microsoft ActiveX Data Objects x.x Es gibt oft viele von ihnen. Wählen Sie das, das Sie brauchen, wenn Sie nicht wissen, wählen Sie das neueste. –

0

Ich glaube, dass das Problem in diesen Typen sein könnten:

adOpenKeyset, adLockOptimistic, adCmdTable 

versuchen, sie wie folgt zu definieren:

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 

Nach Edit:

Entschuldigung, dies ist für den JScrip-Dialekt, aber ich bin sicher, dass Sie es zu VBScript ändern können. :)

+1

Vielleicht haben Sie "Fehler hier" im OP nicht bemerkt? – Fionnuala

+0

In der Tat, danke! – Wodzu

Verwandte Themen