使用带有ACE OLEDB的Excel工作表上的“插入到”SQL语句与列名失败

所以,我想在如何将数据存储到工作表中,并希望使用SQL OLEDB提供的Excel和标准的SQL语句来遵守规则。 插入到列名不起作用,但至less对我来说。 一些代码演示了这个问题。 期望在这里显示的这两种forms工作W3学校SQL INSERT INTO声明

Option Explicit Sub MinimalCompleteVerifiableExample() 'Tools->References "Microsoft ActiveX Data Objects 2.8 Library" Dim wsNew As Excel.Worksheet Set wsNew = ThisWorkbook.Worksheets.Add wsNew.Cells(1, 1) = "TimeStamp" wsNew.Cells(1, 2) = "Path" Dim oConn As ADODB.Connection Set oConn = New ADODB.Connection Debug.Assert UBound(Split(ThisWorkbook.Name, ".")) > 0 '* Workbook needs to be saved oConn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=" & ThisWorkbook.FullName & ";" & _ "Extended Properties='Excel 12.0 Macro'" Dim rsTestRead As ADODB.Recordset Set rsTestRead = New ADODB.Recordset rsTestRead.Open "Select * from [" & wsNew.Name & "$] AS P", oConn, adOpenStatic Debug.Assert oConn.Errors.Count = 0 Debug.Assert rsTestRead.Fields.Item(0).Name = "TimeStamp" Debug.Assert rsTestRead.Fields.Item(1).Name = "Path" Dim sSQL As String sSQL = "insert into [" & wsNew.Name & "$] (TimeStamp,Path) VALUES ('31-Dec-2015','C:\temp');" 'DOES NOT WORK 'sSQL = "insert into [" & wsNew.Name & "$] values ('25-Dec-2015','C:\temp')" 'works Stop oConn.Execute sSQL Debug.Assert oConn.Errors.Count = 0 Stop End Sub 

On获取“INSERT INTO语句中的语法错误”的错误消息。

啊。

似乎在列名旁边加了方括号

  Dim sSQL As String sSQL = "insert into [" & wsNew.Name & "$] ([TimeStamp],[Path]) VALUES ('31-Dec-2015','C:\temp');"