将12本Excel工作手册的72个工作表链接到MSACCESS
我有12个月的快照报告。 事实certificate,昂贵的人力资源数据库不是为了保留历史数据,而是刚刚用最新的数据编写了大量的员工数据。
我可以使用每月的快照重build和查询这个logging,但是导入到访问中有很多东西,必须有一个自动化。
我有6张名为Perm
, PStarters
, Starters
, PStarters
, TLeavers
和TLeavers
。 我有12个工作簿,分别是10_AUG_16
等等(实际上有67个工作簿,但步骤很less)
我已经把所有的Excel文件放到一个文件夹中。 ( h:\reports\cleaned\
)
所以我需要把每张纸都放到自己的桌子上。 (有一万名员工,所以我把它全部放在一张桌子上)
这些表在导入时需要某种命名约定。
因此,如果我将[Sheet Name]
[Directory]
所有.xlsm文件的[Sheet Name]
链接到[Sheet Name]
, 我可以从源表格名称和文件名称中得到它的名称吗?
如果我可以做到这一点,那么我可以只更改6次我猜的工作表参数。
我只有MS OFFICE和一台小巧的i5笔记本电脑。
任何帮助,意见,指导将不胜感激。
谢谢
在MS Access的DoCmd.TransferSpreadsheet方法中,只要给表名称参数一个不存在的数据库表名,该方法应该在数据库中创build这样一个表。 如果你指定一个现有的表,方法将尝试追加到当前的结构:
newtblName = WorbookNameVar & WorksheetNameVar DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, _ newtblName, WorkbookPathVar, True, WorbookSheetVar & "!"
但正如评论中提到的那样,考虑使用一个表格,并提供一些区分差异的指标,例如工作簿/工作表名称。 首先导入一个Excel文件,然后为SourceLocation
添加一个列(Table / Design View)作为短文本数据types。 然后循环所有其他Excel文件:
' ACCESS METHOD DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, _ ExcelImportTable, WorbookPathVar, True, WorbookSheetVar & "!" ' SQL ACTION QUERY CurrentDb.Execute "UPDATE TABLE ExcelImportTable SET SourceLocation = '" _ & WorbookNameVar & WorksheetNameVar & "'"
请注意:这一切都假定Excel数据是以表格格式从行A1
开始的列标题。