2016-04-25 7 views
0

Ich versuche, Tabelle in Access über diesen Code zu aktualisieren, aber es zeigt die Fehlermeldung "Benutzerdefiniert Typ nicht definieren". Wie man dieses Problem löst? Code eingeben hierUpdate Access-Datenbank durch Excel-Tabelle

Sub UpdateClick() 
    Dim conn As ADODB.Connection 
    Dim myRecordset As ADODB.Recordset 
    Dim strConn As String 
Dim s As String 
Set s = "C:\Users\PC2\Documents\Database2.accdb" 

    strConn = "Provider=Microsoft.Jet.OLEDB.4.0 Data Source=s" 
Set strConn = New ADODB.Connection 

    Set myRecordset = New ADODB.Recordset 

    With myRecordset 
     .Open "Select * from PersonInformation", strConn, adOpenKeyset, adLockOptimistic 
     .Fields("ID").Value = Worksheets("Sheet1").Range("A2").Value 
     .Fields("FName").Value = Worksheets("Sheet1").Range("B2").Value 
     .Fields("LName").Value = Worksheets("Sheet1").Range("C2").Value 
     .Fields("Address").Value = Worksheets("Sheet1").Range("D2").Value 
     .Fields("Age").Value = Worksheets("Sheet1").Range("E2").Value 
     .Update 
     .Close 
    End With 

    Set myRecordset = Nothing 
    Set conn = Nothing 
End Sub 
+0

Haben Sie die Microsoft Access-Objektbibliothek in Referenzen aufgenommen? nur neugierig. – useR

+0

Nun, wenn ich Bibliothek hinzufügen Es zeigt die Meldung "Namenskonflikt mit vorhandenen Modul, Projekt, Objektbibliothek" – fiz

+0

Versuchen Sie, die Zeile 'strConn =" Provider = Microsoft.Jet.OLEDB.4.0 Datenquelle = s "' zu 'strConn =" Provider = Microsoft.Jet.OLEDB.4.0 Datenquelle = "& s'. Entfernen Sie auch die 'Set'-Anweisung, von wo Sie den Wert von' s' definieren. –

Antwort

0

Nach meiner Bemerkung, die ich bemerkt, dass Sie mehr falsch hatte als nur die Verbindung.
Passen Sie Ihren Code an das folgende Beispiel an - Websites wie https://www.connectionstrings.com/access/ zeigen Ihnen, welche Zeichenfolge für Ihre Access-Version verwendet werden soll.

Sub FillArrayAccess() 

    Dim oConn As Object 
    Dim myRecordset As Object 
    Dim sConn As String 
    Dim s As String 

    s = "C:\Users\PC2\Documents\Database2.accdb" 

    'Your connection string will change depending on the Access version. 
    sConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & s 
    'sConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & s 'Access 2010 

    Set oConn = CreateObject("ADODB.Connection") 
    oConn.Open sConn 

    Set myRecordset = CreateObject("ADODB.RecordSet") 
    myRecordset.Open "PersonInformation", oConn, 1, 3, &H2 

    With myRecordset 
     .AddNew 
     .Fields("ID").Value = Worksheets("Sheet1").Range("A2").Value 
     .Fields("FName").Value = Worksheets("Sheet1").Range("B2").Value 
     .Fields("LName").Value = Worksheets("Sheet1").Range("C2").Value 
     .Fields("Address").Value = Worksheets("Sheet1").Range("D2").Value 
     .Fields("Age").Value = Worksheets("Sheet1").Range("E2").Value 
     .Update 
     .Close 
    End With 

    Set myRecordset = Nothing 
    Set oConn = Nothing 

End Sub 

Edit: Haben Code aktualisiert mit Original-Plakate Daten zu arbeiten.

Verwandte Themen