我正在尝试将特定列从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,但我不确定这是否是一个解决方案或是否有其他方法。任何帮助将不胜感激,因为它会让我度过太多时间!谢谢!
答案 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
只会传输整张纸。您可以通过以下几种方式转移所需内容:
将所需列复制到第二张表格,然后转移该表格
将数据另存为CSV,然后导入CSV,您可以在其中指定列