Ich versuche, ein Arbeitsblatt zu Access zu exportieren, wo es in eine vorhandene Tabelle eingefügt wird. Ich habe auf this post, this other post, and this other post verwiesen. Ich erhalte einen Fehler, der in keinem von ihnen angesprochen wurde, der mit VBA-Bibliotheken zusammenhängt, aber etwas völlig anderes sein könnte. Hier ist mein Code:Excel VBA-Export zu Access: ADO-Fehler
Sub ExcelToAccessAdo()
Dim cn As ADODB.Connection, rs As ADODB.Recordset, row As Long
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0; " & _
"Data Source=filepath\AccessDB.accdb;" 'this is a different filepath from the real one.
' open a recordset
Set rs = New ADODB.Recordset
rs.Open "Table Export", cn, adOpenKeyset, adLockOptimistic, adCmdTable
row = 2 ' the start row in the worksheet
Do While Not IsEmpty(Worksheets("Table Export").Range("A" & row))
With rs
.AddNew ' create a new record
.Fields("REPTNO") = Worksheets("Table Export").Range("A" & row).Value
.Update
End With
row = row + 1
Loop
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub
Der Name des Arbeitsblatts und Access Name der Tabelle sind identisch. Auch die .Fields("REPTNO")
Linie ist direkt von der Post der anderen Person, so dass ich nicht weiß, ob ich es ändern muss oder nicht.
Der Fehler ist Run-time error '-2147217900 (80040e14)': Syntax error in FROM clause.
auf der Linie rs.Open "Table Export", cn, adOpenKeyset, adLockOptimistic, adCmdTable
.
Dies ist ein merkwürdiger Fehler, da es wie ein Fehler aussieht, den ich beim Ausführen von SQL bekommen würde, aber ich nehme an, es gibt Hintergrund SQL mit einer INSERT INTO
Klausel. Welches ist möglicherweise eine Art von Dateipfadproblem mit Excel? Irgendeine Hilfe?
Hier sind meine Bibliothek Referenzen:
- Microsoft Excel 14.0 Object Library
- OLE Automation
- Microsoft Office 14.0 Object Library
- Microsoft Forms 2.0 Object Library
- Microsoft ActiveX Data Objects 6.1 Bibliothek
- Microsoft ActiveX Data Objects Recordset 6.0 Bibliothek
Ich werde, dass Sie wahrscheinlich ein paar eckigen Klammern um die Tabellennamen in der 'rs.open' Aussage werfen sollten erraten. Ich bin mir da nicht 100% ig sicher, da ich SQL-Anweisungen im Allgemeinen nur über 'rs.open' ausstelle. Geben Sie eine Aufnahme: 'rs.Open" [Table Export] ", cn, adOpenKeyset, adLockOptimistic, adCmdTable' und sehen Sie, ob es den Trick macht. – JNevill
Ja, das war's! Ich fühle mich, als hätte ich das tun sollen ... Willst du eine Antwort einreichen und ich werde es richtig markieren, oder soll ich? – plankton