我有12个月的每月快照报告。 事实证明,昂贵的人力资源数据库并未设置为保留历史数据,而只是以最新的方式写入大量员工数据。
我可以使用每月快照重建和查询此记录,但是有很多内容可以导入访问,并且必须有自动化。
我有6张名为Perm
,Temps
,Starters
,PStarters
,Leavers
和TLeavers
的工作表。
我有12个名为12_OCT_16
,11_SEP_16
,10_AUG_16
等的工作簿等。
(实际上有67本工作簿,但步骤很少)
我已将所有Excel文件放入文件夹中。 (h:\reports\cleaned\
)
所以我需要把每张纸都变成自己的桌子。 (有10,000名员工,所以我把它们全部放在一张桌子里)
这些表在导入时需要某种命名约定。
因此,如果我从[Sheet Name]
中的所有.xlsm文件中链接[Directory]
我可以根据源表名称和文件名命名它创建的表吗?
如果我可以做到这一点,那么我可以只更改工作表参数6次。
我只有MS OFFICE和一台i5笔记本电脑。
非常感谢任何帮助,建议和指导。
由于
答案 0 :(得分:1)
在MS Access'DoCmd.TransferSpreadsheet方法中,只需为表名参数指定一个不存在的数据库表名,该方法应在数据库中创建这样的表。如果指定现有表,则方法将尝试按照当前结构追加到它:
newtblName = WorbookNameVar & WorksheetNameVar
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, _
newtblName, WorkbookPathVar, True, WorbookSheetVar & "!"
但正如评论中所述,请考虑使用一个表并提供一些指标来区分差异,例如工作簿/工作表名称。首先导入一个Excel文件,然后为SourceLocation
添加一个列(表/设计视图)作为短文本数据类型。然后遍历所有其他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
开始,带有列标题。