将excel文件导入访问表

时间:2017-07-19 08:28:42

标签: vba ms-access

我正在创建一个Access数据库,非常感谢VBA的一些帮助。

帮助就是我需要做的事情,

我有一个Excel工作表,其中包含需要添加到Access中现有表的数据。在VBA中是否有一种方法可以逐行添加excel中的数据?

对于Excel中的每一行,我都需要:

第一:检查Access表中是否已存在sample_number,如果存在,则执行一些操作。

第二次:如果sample_number尚不存在,则将此行从excel复制并粘贴到Access表。

现在我被困在如何逐行处理excel电子表格而不是一次导入整个表格。

非常感谢帮助! 感谢

2 个答案:

答案 0 :(得分:1)

访问远比excel更有条理,因此搜索和数据验证更容易实现。要在验证每条记录的同时使用vba从excel导入,我找到的最佳方法是对临时访问表进行全面导入,然后循环访问临时表,验证数据并根据需要将其添加到目标表,而不是尝试在仍然在excel电子表格中查询数据。希望这有帮助

Dim SQL As String
Dim rs As Recordset

SQL = "SELECT field1,field2 FROM tempTable"

Set rs = CurrentDb.OpenRecordset(SQL)
Do While Not rs.EOF

    'YOUR VALIDATION CODE HERE


    rs.MoveNext
Loop

答案 1 :(得分:0)

您可以将transferspreadsheet用于新表,然后使用SQL通过内部联接和左联接派生所需数据的子集这里使用SQL和内置函数将是我的建议。甚至在SQL中跳过导入和使用Excel文件。

像这样的东西,其中新表是导入,db命令是现有表。这处理插入。将连接更改为INNER JOIN并删除WHERE子句将为您提供一个子集,以便对现有记录应用逻辑。

我需要使用一些虚拟数据完全检查SQL,但这是一个好的开始。

使用数据库执行这些工作。

INSERT INTO [tbl_DB_ORDERS] ([ORDER_NO]) SELECT NT.[ORDER_NO] FROM [NEW_TABLE] as NT LEFT JOIN [tbl_DB_ORDERS] AS ORD ON NT.[ORDER_NO]=ORD.[ORDER_NO] WHERE ORD.[ORDER_NO] IS NULL