首页 > 解决方案 > 使用 VBA 上传数百条记录

问题描述

我需要将大量记录从 excel 上传到 msaccess。我目前正在做的是,我在 VBA 中创建了一个“INSERT INTO”sql 查询,并用实际值遍历我的数据表。像这样的东西

for i=1 to NumberOfRecords
Sql=Insert Into Table, cell Field, Values(cell(i,1)
next

当我遇到性能问题时,我想知道是否有更有效的方法来使用 sql。谢谢

标签: sqlexcelvbams-accessbulkinsert

解决方案


考虑一个由 Jet/ACE SQL 引擎支持的直接 Excel 查询。下面假设 Excel 工作表是带有命名标题的表格格式,并以A1单元格开头。在下面保存或运行为 Access 查询。当然,调整所有列、Excel 工作簿路径和工作表名称。

INSERT INTO myTable (Col1, Col2, Col3, ...)
SELECT t.Col1, Col2, Col3, ...
FROM [Excel 12.0 Xml;HDR=Yes;Database=C:\Path\To\Excel\Workbook.xlsx].[Sheet1$] t

对于不是从最左上角A1单元格开始且没有标题的 Excel 数据,请考虑以下查询,该查询从工作表范围中选择数据:B100:Z450。确保列出的表格列与无名标题的 Excel 数据中的数据类型一一匹配。

INSERT INTO myTable (Col1, Col2, Col3, ...)
SELECT *
FROM [Excel 12.0 Xml;HDR=No;Database=C:\Path\To\Excel\Workbook.xlsx].[Sheet1$B100:Z450] t

要调试始终SELECT在完全追加查询之前运行查询部分。


推荐阅读