Excel VBA 为 Access 生成的 INSERT 语句在 VBA 中不起作用,但在 Access 中起作用

Excel VBA generated INSERT statement for Access does not work in VBA but does in Access

我在 Excel 中使用 VBA 来生成要在 VBA 过程中执行的 INSERT 语句。当我 运行 代码时,当我到达 Execute 语句时我得到 运行 时间错误 'Syntax error in INSERT INTO statement' - 如果你在 [=29] 中做错了什么,你会得到同样有用的消息=] 在 Access 中查看。但是,当我 运行 VBA 代码 在 Access 中使用老式复制和粘贴生成 SQL 字符串时,它 运行 很好 - 没有错误消息,当我打开 table.

时,记录就在那里

这不是我在 VBA 中执行命令的方式,因为我有一个 DELETE 语句可以正常工作。代码如下:

Set Cn = CreateObject("ADODB.Connection")
Set Rs = CreateObject("ADODB.Recordset")

Cn.Open cnPath
SQLStr = "SELECT * FROM [" & tblName & "]"
Rs.Open SQLStr, Cn, 1, 3

'code builds SQL str here by looping through
'table headers and relevant row

Cn.Execute SQLStr

结果 SQLStr 是这样的:

INSERT INTO [Size Profiles] (Season,Region,Department,ProfType,ColourID,ArticleNumber,StyleName,Colour,Comments,Channel,Fit,SizeProfile,LastChanged,Identifier,FileName,Size,RegionSizeRun,Site,ActualSizeProfile,ActualFileName,ActualLastChanged,ActualPairs,Fixing,Oddity) VALUES ('AW2018', 'UK', 'Childrens', '', 188473, 26145715, 'Product Name', 'Product Colour', '', 'Retail', 'F(M)', 0.186, #05/09/2018#, '26145715AW2018DC01UKF(M)', 'New Sizing Template.xlsb', 70, '', 'DC01', 0, '', #05/09/2018#, 0, '0', '')

有没有人以前遇到过这个问题?

在漫长的一天后放弃了这个,在睡在上面并在早上回头看后果然我意识到其中一个列名 (Size) 是 MS Access 中的保留字。将 SQL 粘贴到 Access 的设计视图中,程序必须在不通知您的情况下执行某些操作来解决此问题。

我通过添加一段代码解决了这个问题,该代码在字段名称周围添加了方括号,如下所示:

insertPart1 = "INSERT INTO [" & tblName & "] ("
For c = 1 To maxC
    insertPart1 = insertPart1 & "[" & .Cells(1, c).Value & "],"
Next c
insertPart1 = Left(insertPart1, Len(insertPart1) - 1) & ") VALUES "