2010-05-25 192 views
4

什么是从Access 2007应用程序中读取(只读)Excel文件的“最佳”方式。我只想循环遍历行并将数据放入Access表中。将Excel文件读入Access数据库的最佳方法

我不想通过VBA手动导入(获取外部数据对话框)。用户通过浏览按钮获取表单,然后指向具有定义的内容/格式的Excel文件。之后,VBA代码读取数据并将其放入Access数据库。

回答

7

您可以尝试DoCmd.TransferSpreadsheet方法。

DoCmd.TransferSpreadsheet acImport, , "from_excel","C:\Access\demo.xls", True 

将电子表格数据导入名为from_excel的表中,并假定电子表格的第一行包含字段名称。有关更多详细信息,请参阅TransferSpreadsheet的访问帮助或在线here

3

如果要读取整个电子表格,可以将Excel电子表格直接导入到Access中。见herehere

您也可以选择链接到Excel电子表格,而不是导入它。这样,Excel电子表格中的任何更改都会反映在链接表中。但是,您将无法从Access内进行更改。

第三个选项是在Access中编写一些VBA代码来打开一个记录集并读取电子表格。请参阅KeithG的答案this thread。你可以做这样的事情在VBA来打开电子表格:

Dim xl As Excel.Application 
Dim xlsht As Excel.Worksheet 
Dim xlWrkBk As Excel.Workbook 

Set xl = CreateObject("Excel.Application") 
Set xlWrkBk = GetObject("H:/ggg.xls") 
Set xlsht = xlWrkBk.Worksheets(1) 
+0

谢谢,优秀的内容,但我的意思是VBA的一个选项。我已经扩展了这个问题,参见上文 – waanders 2010-05-25 14:31:56

+0

查看我的编辑帖子,了解如何通过VBA访问电子表格的一些信息。 – TLiebe 2010-05-25 14:37:38

+0

您可以使用DoCmd.TransferSpreadsheet在VBA中运行导入。这个答案似乎很不完整,没有提到这一点,在我看来。 – 2010-05-25 18:08:41

0

尝试是这样的:通过行和列

Dim excelApp As Excel.Application 
Dim workbook As Excel.Workbook 
Dim worksheet As Excel.Worksheet 

Set excelApp = CreateObject("Excel.application") 
Set workbook = excelApp.Open("C:\someFileName.xls") 
Set worksheet = workbook.Worksheets(1) 

然后循环,从细胞中提取数据,并插入它进入数据库。 (您可以使用worksheet.cells方法。)尝试在Google上搜索代码示例。

+0

那么,您如何遍历行和列?我想将xlsx导入到表中,但由于列不一定与表中的列匹配,所以我需要手动执行一些重定向。 – Hill 2017-04-29 17:43:55

相关问题