【问题标题】:import excel file into access table将excel文件导入访问表
【发布时间】:2017-12-24 09:32:49
【问题描述】:

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

帮助是我需要做的,

我有一个 Excel 工作表,其中包含需要添加到 Access 中现有表中的数据。 VBA有没有办法在excel中逐行添加数据?

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

1st:检查access表中是否已经存在sample_number,如果存在则执行一些操作。

第 2 次​​strong>:如果 sample_number 不存在,则将此行从 excel 复制并粘贴到 Access 表中。

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

非常感谢您的帮助! 谢谢

【问题讨论】:

  • 到目前为止您尝试了什么,您可以发布您的尝试以及为什么不适合。您可以将transferspreadsheet 用于新表,然后使用SQL 通过使用inner joinleft join 派生所需的数据子集。在这里使用SQL 和内置函数,这将是我的建议。甚至跳过导入并在 SQL 中使用 Excel 文件。
  • 您好,我一直在尝试使用“循环查询”和“聚合函数”来实现我的最终目标,但到目前为止,查询功能似乎不足以满足我的需求。

标签: vba ms-access


【解决方案1】:

Access 比 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

【讨论】:

    【解决方案2】:

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

    像这样,新表是导入,数据库订单是现有表。这处理插入。将连接更改为 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-16
      • 1970-01-01
      • 1970-01-01
      • 2021-05-25
      • 2016-12-14
      • 1970-01-01
      • 2010-09-27
      相关资源
      最近更新 更多