Я пытаюсь экспортировать рабочий лист в Access, где он будет вставляться в существующую таблицу. Я ссылался на this post, this other post, and this other post. Я получаю сообщение об ошибке, которое не рассматривалось ни в одном из них, которое, я думаю, может быть связано с библиотеками VBA, но может быть чем-то совершенно другим. Вот мой код:Excel VBA Export to Access: ошибка ADO
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
Имя рабочего листа и имя таблицы доступа одинаковы. Также линия .Fields("REPTNO")
находится прямо из сообщения другого человека, поэтому я не знаю, буду ли я менять ее или нет.
Ошибка Run-time error '-2147217900 (80040e14)': Syntax error in FROM clause.
на линии rs.Open "Table Export", cn, adOpenKeyset, adLockOptimistic, adCmdTable
.
Это странная ошибка, так как это похоже на ошибку, которую я получал при запуске SQL, но я предполагаю, что существует некоторый фоновый SQL-процесс с предложением INSERT INTO
. Который, возможно, это какой-то тип пути к файлу с Excel? Любая помощь?
Вот моя библиотека Ссылка:
- Microsoft Excel Библиотека 14,0 Объекта
- OLE Automation
- Microsoft Office Библиотека 14,0 Объекта
- Microsoft Forms Library 2.0 Object
- Microsoft ActiveX Data Objects 6.1 Библиотека
- Microsoft ActiveX Data Objects Recordset 6.0 Библиотека
Я собираюсь предположить, что вы, вероятно, следует бросить некоторые квадратные скобки вокруг вашего имени таблицы в 'rs.open' заявлении. Я не уверен на 100%, потому что я вообще только выдает SQL-заявления через 'rs.open'. Сделайте снимок: «rs.Open» [Table Export] », cn, adOpenKeyset, adLockOptimistic, adCmdTable' и посмотрите, не делает ли это трюк. – JNevill
Да, это было! Я чувствую, что должен был это сделать ... Вы хотите отправить ответ, и я отметю его правильно, или я должен? – plankton