Excel VBA 导出到 Access:ADO 错误
Excel VBA Export to Access: ADO Error
我正在尝试将工作表导出到 Access,它将被粘贴到现有的 table 中。我引用了 this post, this other post, and this other post。我收到一个错误,我认为这些错误中的任何一个都没有解决,我认为可能与 VBA 库有关,但可能完全不同。这是我的代码:
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
工作表名称和 Access table 名称相同。另外 .Fields("REPTNO")
行直接来自其他人的 post 所以我不知道我是否必须更改它。
错误是Run-time error '-2147217900 (80040e14)': Syntax error in FROM clause.
在线rs.Open "Table Export", cn, adOpenKeyset, adLockOptimistic, adCmdTable
。
这是一个奇怪的错误,因为它看起来像是我在 运行 SQL 时遇到的错误,但我假设有一些背景 SQL 发生在 INSERT INTO
子句。这可能是 Excel 的某种类型的文件路径问题?有帮助吗?
这是我的图书馆参考资料:
- 微软 Excel 14.0 对象库
- OLE 自动化
- Microsoft Office 14.0 对象库
- Microsoft Forms 2.0 对象库
- Microsoft ActiveX 数据对象 6.1 库
- Microsoft ActiveX 数据对象记录集 6.0 库
感谢@JNevill 指出我只需要使用方括号:
rs.Open "[Table Export]", cn, adOpenKeyset, adLockOptimistic, adCmdTable
尽量避免在任何对象名称(表格、Field_Names、表单、报告等)中使用空格。你可以这样做,但正如你所知,这会导致更多时间和不必要的挫折来使事情正常化。另外,不要在代码中使用保留字。
我正在尝试将工作表导出到 Access,它将被粘贴到现有的 table 中。我引用了 this post, this other post, and this other post。我收到一个错误,我认为这些错误中的任何一个都没有解决,我认为可能与 VBA 库有关,但可能完全不同。这是我的代码:
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
工作表名称和 Access table 名称相同。另外 .Fields("REPTNO")
行直接来自其他人的 post 所以我不知道我是否必须更改它。
错误是Run-time error '-2147217900 (80040e14)': Syntax error in FROM clause.
在线rs.Open "Table Export", cn, adOpenKeyset, adLockOptimistic, adCmdTable
。
这是一个奇怪的错误,因为它看起来像是我在 运行 SQL 时遇到的错误,但我假设有一些背景 SQL 发生在 INSERT INTO
子句。这可能是 Excel 的某种类型的文件路径问题?有帮助吗?
这是我的图书馆参考资料:
- 微软 Excel 14.0 对象库
- OLE 自动化
- Microsoft Office 14.0 对象库
- Microsoft Forms 2.0 对象库
- Microsoft ActiveX 数据对象 6.1 库
- Microsoft ActiveX 数据对象记录集 6.0 库
感谢@JNevill 指出我只需要使用方括号:
rs.Open "[Table Export]", cn, adOpenKeyset, adLockOptimistic, adCmdTable
尽量避免在任何对象名称(表格、Field_Names、表单、报告等)中使用空格。你可以这样做,但正如你所知,这会导致更多时间和不必要的挫折来使事情正常化。另外,不要在代码中使用保留字。