繁体   English   中英

将整个Excel文件文件夹导入Access 2013

[英]Import entire folder of Excel files into Access 2013

我很难将多个Excel文件导入到特定的Access 2013表中。

我尝试使用从另一个SO问题中找到的代码:

Do While Len(strFile) > 0
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _
        strTable, strPathFile, blnHasFieldNames
Loop

但这会为每个文件创建新表,我需要将所有101个文件都放在一个表中。 我尝试测试的代码在DoCmd.TransferSpreadsheet上失败,而且我似乎根本无法使该部分正常工作。

我很幸运使用带有以下参数的命令:

DoCmd.TransferSpreadsheet 0, 10, tableName, wbPath, True, "MySheet!A1:C100"

该行是从工作应用程序复制粘贴的,其中将来自Excel文件的数据导入到现有的Access表中,而不会覆盖或更改表中的现有数据。

参数列表说明:

  • 0:应与acImport枚举相同
  • 10:与acSpreadsheetTypeExcel12Xml枚举相同(我认为我使用整数10是因为有些兼容性,其中枚举具有不同的值或在某些版本的Access中未定义)
  • tableName:是Access数据库中现有表的名称
  • wbPath:是以xlsx格式保存的工作簿的绝对文件路径
  • True:表示工作表有标题
  • “ MySheet!A1:C100”指示工作表名称和应导入的单元格范围。

我不记得Excel工作表中的列标题和/或列顺序是否必须与Access表的列匹配。 但是,它们应该匹配确实很有意义。 你检查了吗?

我记得,如果Excel工作表中单元格中的某些数据类型与Access表中相应列的数据类型不匹配/不匹配,Access将创建一些临时的“报告表”,这表明在执行过程中发生了错误导入。 也许那就是您正在经历的事情?

这是文件类型枚举(第二个函数参数)及其对应文件类型的列表。 您使用的是正确的枚举值吗? 我看到您提供了acSpreadsheetTypeExcel9的值,是否要从Excel 2000文件导入?

Excel 3                           acSpreadsheetTypeExcel3
Excel 95                          acSpreadsheetTypeExcel7
Excel 97                          acSpreadsheetTypeExcel8
Excel 2000                        acSpreadsheetTypeExcel9 (default)
Excel 2002                        acSpreadsheetTypeExcel10
Excel 2003                        acSpreadsheetTypeExcel11
Excel 2007 Binary Format (.xslb)  acSpreadsheetTypeExcel12
Excel 2007 (xlsx)                 acSpreadsheetTypeExcel12Xml

更新:

Access将使用您从中运行宏的当前数据库中的表(假设您从Access中运行该表)。 如果要导入到另一个数据库,可以执行以下操作:

Dim accessApplication As Variant
Set accessApplication = CreateObject("Access.Application")

accessApplication.OpenCurrentDatabase databasePath, False

accessApplication.DoCmd.TransferSpreadsheet 0, 10, tableName, wbPath, True, "MySheet!A1:C100"

其中,databasePath是现有数据库的绝对文件路径。 最后一个参数指定是否要以独占模式打开数据库。 缺省值为False,它指定应以共享模式打开数据库。

上面的代码将确保将数据导入到特定Access数据库文件中的指定表中。

如果所有要导入的数据都存储在一个Excel文件中,则建议您将导入宏放在Excel文件中,而不要放在多个Access文件中。 这样可以更轻松地维护宏。 切记要在VBA编辑器的“工具”->“引用”中添加对Microsoft Access对象库的引用。 如果您都有多个Excel文件和多个Access文件,则可以考虑拥有一些主Excel工作簿,该工作簿仅保存宏,然后打开其他Excel文件和Access数据库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM