AW: VBA Kompilierungsfehler
22.06.2020 17:23:20
Andreas
Hi,
ich habe das beim letzten mal nicht gequotet, so kam das wohl zustande. Wenn ich es jetz quote
Set db = OpenDatabase("C:\Users\linus\Familie\Quartette\Datenbank\Access-DB\QuartettDB. _
accdb")
sqlText = "INSERT INTO tblQuKarten " & _
"(QuartettID_F," & _
" KartenNr," & _
" Kartenbezeichnung," & _
" ModellTyp," & _
" Druckdatum," & _
" BildFlaggen)" & _
" Values ('" & ws.Cells(i, 2) & "', " & _
"'" & ws.Cells(i, 3) & "', " & _
"'" & ws.Cells(i, 4) & "', " & _
"'" & ws.Cells(i, 5) & "', " & _
"'" & ws.Cells(i, 6) & "', " & _
"'" & ws.Cells(i, 7) & "')"
db.Execute sqlText
Und ich will nur die Daten aus einer Excel in die Accesstabelle exportieren. Das funktioniert j auch mit meinem Makro. Beispiel:
Sub QuartetteAnfuegen()
' Verweis auf Microsoft DAO 3.6 Object Library
Dim db As DAO.Database
Dim ws As Worksheet
Dim i As Long
Set db = OpenDatabase("C:\Users\linus\Familie\Quartette\Datenbank\Access-DB\QuartettDB. _
accdb")
Set ws = ActiveWorkbook.Worksheets("tblQuartette")
' Annahmen:
' 1) Exceltabelle hat Feldnamen
' 2) Spalte A enthält die Schlüsselnummer (Datentyp Zahl)
' 3) Spalte B|C|D enthalten die anzufügenden Daten (Datentyp Text und Zahl)
For i = 2 To ws.Cells(Cells.Rows.Count, 2).End(xlUp).Row
db.Execute "INSERT INTO tblQuartette (SpielID_F,QuartettKz,QuartettBezeichnung) _
Values ('" & ws.Cells(i, 2) & "','" & ws.Cells(i, 3) & "','" & ws.Cells(i, 4) & "')"
Next
MsgBox "Es wurden Datensätze in der Tabelle Quartette angefügt."
db.Close
Set db = Nothing
Set ws = Nothing
End Sub
Nachdem ich jetzt eine Erweiterung machen wollte, bekam ich Syntaxfehler in der INSERT INTO-Anweisung.
Sub KartenAnfuegen()
' Verweis auf Microsoft DAO 3.6 Object Library
Dim db As DAO.Database
Dim ws As Worksheet
Dim i As Long
Set db = OpenDatabase("C:\Users\linus\Familie\Quartette\Datenbank\Access-DB\QuartettDB. _
accdb")
Set ws = ActiveWorkbook.Worksheets("tblQuKarten")
' Annahmen:
' 1) Exceltabelle hat Feldnamen
' 2) Spalte A enthält die Schlüsselnummer (Datentyp Zahl)
' 3) Spalte B|C|D|E|F|G enthalten die anzufügenden Daten (Datentyp Text und Zahl)
For i = 2 To ws.Cells(Cells.Rows.Count, 2).End(xlUp).Row
db.Execute "INSERT INTO tblQuKarten (QuartettID_F,KartenNr,Kartenbezeichnung, _
ModellTyp,Druckdatum,BildFlaggen) Values ('" & ws.Cells(i, 2) & "','" & ws.Cells(i, 3) & "','" & ws.Cells(i, 4) & "'," & ws.Cells(i, 5) & "'," & ws.Cells(i, 6) & "'," & ws.Cells(i, 7) & ")'"
' For i = 2 To ws.Cells(Cells.Rows.Count, 2).End(xlUp).Row
' db.Execute "INSERT INTO tblQuKarten (QuartettID_F,KartenNr,Kartenbezeichnung, _
ModellTyp,Druckdatum,BildFlaggen)" &_
' "Values ('" & ws.Cells(i, 2) & "','" & ws.Cells(i, 3) & "','" & ws.Cells(i, 4) & "' _
," & ws.Cells(i, 5) & "'," & ws.Cells(i, 6) & "'," & ws.Cells(i, 7) & "')"
Next
MsgBox "Es wurden Datensätze in der Tabelle Karten angefügt."
db.Close
Set db = Nothing
Set ws = Nothing
End Sub
Gruß Andreas