簡體   English   中英

通過 Excel VBA 在 Excel Recordset 中插入一行

[英]Insert a row in an Excel Recordset through Excel VBA

我試圖在記錄集的最后一行插入一些值,在這種情況下,它是用作我的數據庫的 Excel 文件。 我有下面的代碼可以將文本框的值插入到excel記錄集的最后一行。 但是,它沒有創建插入值的新表行。

Sub CreaterRow()
    Dim strFile As String
    Dim strConnect As String
    Dim strSQL As String
    Dim lngCount As Long
    Dim cnn As New ADODB.Connection
    Dim rst As New ADODB.Recordset
    strFile = "C:\Excel\Test.xlsx"
    strConnect = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strFile & _
    ";Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
    cnn.Open ConnectionString:=strConnect
    strSQL = "SELECT [ID] FROM [Sheet1$]"
    rst.Open Source:=strSQL, ActiveConnection:=cnn, CursorType:=adOpenForwardOnly, Options:=adCmdText

    With rst
        .AddNew
           .Fields("ID").Value = tbx_ID.Value 'Inserting this in the recordset did not create a new row
         .Update
    End with 

    rst.Close
    cnn.Close
End Sub

表如何自動創建一個新行,其中將包含插入到最后一行的值? 謝謝你。

這對我有用。 您需要有正確的游標和鎖類型。

Sub CreaterRow()
    Dim strFile As String
    Dim strConnect As String
    Dim strSQL As String
    Dim cnn As New ADODB.Connection
    Dim rst As New ADODB.Recordset

    strFile = ThisWorkbook.Path & "\Data.xlsx"

    strConnect = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=""" & strFile & _
                """;Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
    cnn.Open ConnectionString:=strConnect
    strSQL = "SELECT [ID] FROM [Sheet1$]"

    rst.Open strSQL, cnn, adOpenKeyset, adLockOptimistic

    With rst
        .AddNew
        .Fields("ID").Value = "ID00020"
        .Update
    End With

    rst.Close
    cnn.Close
End Sub

編輯:如果您從表/列表對象查詢數據,則附加記錄不會調整列表大小以包括添加的記錄。 請參閱: ADO:Excel:是否可以在表名上打開記錄集?

EDIT2:如果您使用命名范圍而不是 ListObject,那么您可以按名稱(而不是使用工作表名稱)查詢它,並且在您插入新行時范圍調整。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM