2017-03-03 3 views
1

ワークシートにデータを格納する方法を習得し、SQL OLEDB Provide for Excelと標準SQL文を使用したいと思っています。列名で挿入すると、少なくとも私にとっては機能しません。いくつかのコードは、この問題を示しています。 W3 Schools SQL INSERT INTO StatementACE OLEDBでExcelワークシートに列名を含む 'Insert Into' SQL文を使用すると、エラーが発生する

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 

で動作するようにここに示されている両方の形式を期待してのエラーメッセージを取得「INSERT INTOステートメントの構文エラーを。」

答えて

1

Ah。

1つの列名の周りの角括弧を追加思わ

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