什么是从Access 2007应用程序中读取(只读)Excel文件的“最佳”方式。我只想循环遍历行并将数据放入Access表中。将Excel文件读入Access数据库的最佳方法
我不想通过VBA手动导入(获取外部数据对话框)。用户通过浏览按钮获取表单,然后指向具有定义的内容/格式的Excel文件。之后,VBA代码读取数据并将其放入Access数据库。
什么是从Access 2007应用程序中读取(只读)Excel文件的“最佳”方式。我只想循环遍历行并将数据放入Access表中。将Excel文件读入Access数据库的最佳方法
我不想通过VBA手动导入(获取外部数据对话框)。用户通过浏览按钮获取表单,然后指向具有定义的内容/格式的Excel文件。之后,VBA代码读取数据并将其放入Access数据库。
您可以尝试DoCmd.TransferSpreadsheet方法。
DoCmd.TransferSpreadsheet acImport, , "from_excel","C:\Access\demo.xls", True
将电子表格数据导入名为from_excel的表中,并假定电子表格的第一行包含字段名称。有关更多详细信息,请参阅TransferSpreadsheet的访问帮助或在线here。
如果要读取整个电子表格,可以将Excel电子表格直接导入到Access中。见here或here。
您也可以选择链接到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)
尝试是这样的:通过行和列
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上搜索代码示例。
那么,您如何遍历行和列?我想将xlsx导入到表中,但由于列不一定与表中的列匹配,所以我需要手动执行一些重定向。 – Hill 2017-04-29 17:43:55
谢谢,优秀的内容,但我的意思是VBA的一个选项。我已经扩展了这个问题,参见上文 – waanders 2010-05-25 14:31:56
查看我的编辑帖子,了解如何通过VBA访问电子表格的一些信息。 – TLiebe 2010-05-25 14:37:38
您可以使用DoCmd.TransferSpreadsheet在VBA中运行导入。这个答案似乎很不完整,没有提到这一点,在我看来。 – 2010-05-25 18:08:41