【问题标题】:Copy DAO recordset from Excel into Access table将 DAO 记录集从 Excel 复制到 Access 表中
【发布时间】:2016-11-08 14:54:31
【问题描述】:

我一直在无休止地寻找解决方案,但根本无法弄清楚。任何帮助将不胜感激。

我目前有一些 Access VBA 代码,用于设置与 Excel 工作表中的范围的 DAO 记录集连接。 (我已避免将电子表格链接为链接表,因为我不确定您是否可以仅使用特定范围执行此操作,不幸的是,以任何方式编辑电子表格都不是一种选择)。

然后我需要将此数据复制到表中。我目前正在遍历每条记录并将其添加到新记录集中,如下所示:

Set rsTbl = CurrentDb.OpenRecordset("tblData")
dbpath = "S:\OPS\Agent Performance.xls"
Set db = OpenDatabase(dbpath, False, True, "Excel 8.0;HDR=Yes;")
Set rst = db.OpenRecordset("SELECT * FROM [AgentActivity$C7:AP1000]")

Do Until rst.EOF
    rsTbl.AddNew
    For Each fld In rst.Fields
        rsTbl(fld.Name) = fld.Value
    Next fld
    rsTbl.Update
rst.MoveNext
Loop

这很好用,但我需要遍历每个工作簿中的很多记录,还需要遍历很多工作簿。我希望有一种方法可以将整个记录集转储到 tblData 中,而不必像现在这样循环。

有人知道更好的方法吗?

【问题讨论】:

    标签: sql ms-access vba


    【解决方案1】:

    好吧,经过这么长时间寻找解决方案,我终于到了寻求帮助的地步,然后我还是想通了。

    我使用了 transferSpreadsheet 方法来链接我需要的范围,然后使用 INSERT INTO 语句将数据移动到 tblData

    DoCmd.DeleteObject actable, "tblTemp"
    path = "S:\OPS\Agent Performance.xls"
    DoCmd.TransferSpreadsheet acLink, acSpreadsheetTypeExcel9, "tblTemp", path, True, "AgentActivity!C7:AP1000"
    CurrentDb.Execute "INSERT INTO tblData SELECT * FROM tblTemp"
    

    然后我可以循环到下一个工作簿并覆盖 tblTemp。它现在运行得更快了。可能还有另一种更好的方法,但至少我已经取得了进展。希望这对其他人有用。

    【讨论】:

      猜你喜欢
      • 2020-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-15
      相关资源
      最近更新 更多