You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel VBA从Access取数报错:运行时错误-2147217900(无效SQL语句)

解决Excel VBA从Access取数据时的“无效SQL语句”错误

问题根源

Access中,若表名包含空格,直接裸用表名会被解析为无效SQL语法,这就是你触发运行时错误-2147217900的原因。你提到的Production cost能正常运行大概率是输入笔误,或是实际表名无空格,否则同样会报错。

解决方案

将带空格的表名用**方括号[]**包裹,让Access正确识别这是一个完整的表名,而非多个SQL关键字。

修改后的VBA代码

Sub getdata()
    Dim con As ADODB.Connection
    Set con = New ADODB.Connection
    con.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\C:Mydata\database.accdb;")
    Dim rst As ADODB.Recordset
    Set rst = New ADODB.Recordset
    ' 用方括号包裹带空格的表名
    rst.Open "[Production Result]", con
    Dim r As Long
    r = 3
    rst.MoveFirst
    Do While Not rst.EOF
        Sheets("sheet1").Cells(r, 3).Value = rst.Fields("lot_no").Value
        r = r + 1
        rst.MoveNext
    Loop
    ' 释放数据库资源,避免内存泄漏
    rst.Close
    Set rst = Nothing
    con.Close
    Set con = Nothing
End Sub

额外提示

  • 所有包含空格、特殊字符或Access保留字的表名、字段名,都建议用方括号包裹。
  • 数据库操作完成后务必关闭Recordset和Connection并释放对象,防止内存占用异常。

内容的提问来源于stack exchange,提问作者DragonflyTech

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 19:22:48