首页 > 解决方案 > VBA“INSERT INTO”错误 - 从 Excel 导入数据

问题描述

我在 excel 中使用 VBA 代码来选择一些数据并将其插入 Access DB。我需要这个用于几张桌子。

问题是:对于其中一些表,我收到如下错误:“INSERT INTO 语法错误”。但是,如果我得到代码生成并用于插入的字符串,并在 SQL 模式表单 Access 中使用它,查询就可以正常工作。所以这没有任何意义。这是其中的一部分:

For j = 6 To lastrow

            SQLStr = "INSERT INTO TENSILE(REFERENCE, REF_ID, POSITION, RATIO, YSL0, YSL90, YSL180, YSL270, YST0, YST90, YST180, YST270, UTSL0, UTSL90, UTSL180, UTSL270, UTST0, UTST90, UTST180, UTST270, EL0, EL90, EL180, EL270, ET0, ET90, ET180, ET270, ARL0, ARL90, ARL180, ARL270, ART0, ART90, ART180, ART270) SELECT '" & ws3.Cells(j, 1) & "', REF.ID,'" & ws3.Cells(j, 60).Value & "'"

            For i = 61 To 93

                SQLStr = SQLStr & "," & ws3.Cells(j, i).Value

            Next i

            SQLStr = SQLStr & " FROM REF WHERE REF.REFERENCE LIKE '" & ws3.Cells(j, 1) & "'"
            ws3.Cells(7, 3).Value = SQLStr
            MsgBox (SQLStr)
            'rs.Open SQLStr, con, adOpenStatic, adLockOptimistic 'Opening the query


        Next j

重要的是要注意,其他表也使用相同的结构并且可以正常工作,例如:

For j = 6 To lastrow

            SQLStr = "INSERT INTO METALOGRAPHY(REFERENCE, REF_ID,  AUSTGRAINSIZE) SELECT '" & ws3.Cells(j, 1) & "',REF.ID ," & ws3.Cells(j, 18).Value & " FROM REF WHERE REF.REFERENCE LIKE '" & ws3.Cells(j, 1) & "'"
            'MsgBox (SQLStr)
            'ws3.Cells(2, 3).Value = SQLStr
            rs.Open SQLStr, con, adOpenStatic, adLockOptimistic 'Opening the query


        Next j

出了什么问题?

标签: ms-access-2013

解决方案


您是否考虑过更改链接到 Access DB 的方式,以便可以使用如下语句:

db.execute SQLStr

这应该可以解决您的问题


推荐阅读