将数据导入 Access 时如何跳过 Excel 中的前几行?

Posted

技术标签:

【中文标题】将数据导入 Access 时如何跳过 Excel 中的前几行?【英文标题】:How to skip first few rows in Excel when importing data into Access? 【发布时间】:2019-06-23 14:42:35 【问题描述】:

我是 Access 2016 VBA 的新手,我一直在将 Excel 数据导入 Access 表。

但问题是我需要跳过 Excel 表的前三行,以便我可以直接将 Excel 数据保存到 Access 表中。我怎样才能做到这一点?

这是我用来将 Excel 数据导入表格的代码:

DoCmd.TransferSpreadsheet acImport, , Tbl, SelectedFls, True

还有一件事是无法指定 Excel 单元格的范围,因为它会有所不同。

【问题讨论】:

发布更多代码/ 【参考方案1】:

MS Access 对无序数据集进行操作,因此,您不能依赖查询返回的记录顺序,或从电子表格或文本文件等外部源将数据导入表中的顺序.

只有在包含order by 子句的情况下严格定义排序时,才能依赖查询返回的记录顺序。

因此,如果您希望继续为您的任务使用TransferSpreadsheet 方法,您将需要确定一种识别要省略的记录的方法,该方法与导入记录的顺序无关。这样,您可以将所有记录导入表中,然后运行 ​​delete 查询,将记录识别逻辑作为其选择标准。

我可以看到实现此目的的唯一其他方法是使用 ActiveX 与 MS Access 中的 Excel 工作表交互,遍历工作表中的行,并填充记录集,同时省略遇到的前三行。

【讨论】:

【参考方案2】:

对于此类解决方法,我使用了删除 Excel 文件中的前三行。您可以在 Excel 中录制宏,然后在 Access 中导入文件之前调用预处理。

其他选项是使用命名范围,您可以将它们直接导入 Access。

最适合您的解决方案是使用 DoCmd.Transferspreadsheet 范围规范,如此处所述 - https://docs.microsoft.com/ru-ru/office/vba/api/access.docmd.transferspreadsheet

DoCmd.TransferSpreadsheet acImport, , Tbl, SelectedFls, True, "A4:G12"

在这种情况下,您将导入指定的范围,例如从第 4 行到第 12 行

一些缺点是:

您应该知道要导入的记录数,或者也导入空白,并进一步删除它们 它不会导入更多的 65536 行,如此处所述 - Problem with MS Access Data Import 65000 lines limit despite using non-Excel 2003 functions and files

【讨论】:

【参考方案3】:

如果您总是希望跳过前三行,您只需将起始位置更改为DoCmd.TransferSpreadsheet acImport, , Tbl, SelectedFls, True, "A4",然后使用下面的代码获取所有输入,直到您点击一个空单元格。

DoCmd.TransferSpreadsheet acImport, , Tbl, SelectedFls, True, "A4"
'first line checks if this cell is empty or not
Do While xlc.Value <> ""
    'takes the value of the current cell
    WO_Num(lngColumn) = xlc.Offset(0, 0).Value
    'shifts the selected cells one row downwards
    Set xlc = xlc.Offset(1, 0)
    lngColumn= lngColumn + 1 
Loop

【讨论】:

以上是关于将数据导入 Access 时如何跳过 Excel 中的前几行?的主要内容,如果未能解决你的问题,请参考以下文章

将 Access 表导入 Excel 表,而不将第一条记录作为 Access 字段标签

如何将Excel中的数据导入到Access数据库中

如何以编程方式将 Excel 数据导入 Access 表?

如何将一张excel文件导入access数据库?

打开多个 Excel 实例时如何通过 Excel 宏将数据从 Excel 导出到 Access

如何使用delphi将Excel文件导入Access数据库