【问题标题】:Insert a row in an Excel Recordset through Excel VBA通过 Excel VBA 在 Excel 记录集中插入一行
【发布时间】:2020-01-24 04:03:34
【问题描述】:

我正在尝试在记录集的最后一行插入一些值,在这种情况下,记录集是用作我的数据库的 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

表如何自动创建一个新行,其中包含插入到最后一行的值?谢谢你。

【问题讨论】:

  • 你没有在你的记录集上调用Update
  • 感谢您指出这一点。我无法粘贴 '.Update' 我的问题还是一样。
  • 你没有收到任何错误?
  • 不,我没有收到任何错误。

标签: excel vba


【解决方案1】:

这对我有用。您需要有正确的光标和锁定类型。

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: Is it possible to open recordset on table name?

EDIT2:如果您使用命名范围而不是ListObject,那么您可以按名称(而不是使用工作表名称)和范围在您插入新行时进行调整。

【讨论】:

  • 它工作正常,但仍然没有创建表格行。您的结果是否创建了新的表格行
  • 是 - 添加在现有数据的末尾。
  • 对我来说,值已插入并附加到数据的末尾,但表没有创建新行。如果可行,我将尝试创建一个新表。谢谢。
  • D***。我非常感谢您提供见解。如果您可以更改您的答案以反映链接中的信息,那么我将检查您的答案。所以总而言之,这种情况下是不可能添加表格行的吧?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多