将特定列从Excel传输到Access Table中的特定列

时间:2017-10-13 19:34:21

标签: excel ms-access access-vba ms-access-2010

我正在尝试将特定列从Excel文档传输到特定列到Access数据库中的表。例如,我的Excel工作表可能包含以下内容:

Date  Last  First  Gender   Month  School  Grade 
10/1  Rode  Danny  Male     Sept.  Ro ISD     10 
10/2  Dode  Manny  Male     Sept.  Ro ISD     11

我的数据库的My Student Table可能包含以下字段:

Type Source Phone Email Last First School Major School Grade

我只希望导出标记为:Last,First,School,Grade的excel列,并将它们放在我的学生表中各自的列中。我通过访问查看了VisualBasic中的DoCmd.TransferSpreadSheet,但我不确定这是否是一个解决方案或是否有其他方法。任何帮助将不胜感激,因为它会让我度过太多时间!谢谢!

3 个答案:

答案 0 :(得分:5)

考虑直接从Excel工作表查询,因为它们都可以与Jet / ACE SQL引擎连接。以下假设您的工作表数据以A1开头,并带有列标题。在VBA DAO / ADO调用中集成以下操作查询,或直接将其置于Access的查询设计(SQL模式)中。

INSERT INTO myAccessTable ([Last], [First], [School], [Grade])
SELECT [Last], [First], [School], [Grade] 
FROM [Excel 12.0 Xml;HDR=Yes;Database=C:\Path\To\Excel\File.xlsx].[SheetName$]

答案 1 :(得分:3)

有很多方法可以实现这一目标。一种快速方法是将Excel电子表格中的所有数据导入表格(即" MyExcelImportTable")。然后,您可以创建并运行一个只追加所需数据的查询。

INSERT INTO MyStudentTable(Last, First, School, Grade)
SELECT Last, First, School, Grade FROM MyExcelImportTable

答案 2 :(得分:2)

DoCmd.TransferSpreadSheet只会传输整张纸。您可以通过以下几种方式转移所需内容:

  1. 将所需列复制到第二张表格,然后转移该表格

  2. 将数据另存为CSV,然后导入CSV,您可以在其中指定列