将多个Excel文档链接到Access数据库

我有大约200个Excel工作簿,每个工作簿都有一个唯一的名称,在它自己的文件夹中,像C:\docs\daily\XXXX\XXXX_Daily_Report_20150920.xls ,其中XXXX只是一个字母数字标识符,显然这个date就是今天的date。 我需要每天从所有200多个Excel工作簿中获得一个单元格(同一单元格,“I2”)。

我知道你可以将Excel工作簿链接到Access,但我不能找出一种方法,使其每天链接到一个不同的工作簿,我想知道是否有一个查询只是得到一个单元格,而不是链接整个Excel工作簿。

现在我有Excel的VBA打开每个Excel文件,并将其复制并粘贴到我的工作簿中相应的行/列…但是,因为它做了200多次,我想知道如果Access将有一个更快的解决scheme。

有没有办法在Access中编写查询/macros,将链接单元格I2从每一天的新报告(所以明天将是“XXXX每日报告20150921.xls”),只是在第一列和XXXX填充一个表和I2在第二的值?

 Function import() source_date = InputBox("date (yyyymmdd)") Set db = CurrentDb() db.Execute ("delete * from [DailyData]") Set app = CreateObject("Excel.Application") Set FSO = CreateObject("Scripting.FileSystemObject") Set folder_list = FSO.GetFolder("C:\docs\daily").subfolders For Each Fldr In folder_list Source = Fldr.Name SourceFile = "c:\docs\daily\" & Source & "\" & Source & "_daily_reports_" & source_date & ".xlsm" Set WB = app.workbooks.Open(SourceFile) amount = WB.sheets("sheet1").range("I2").Value SQL = "Insert into [DailyData] (source, amount) select '" & Source & "'," & amount db.Execute (SQL) WB.Close Next Fldr MsgBox ("done") End Function 

这将获取特定date的所有文件,并将input放入名为DailyData的表格中,其中包含Source和Amount字段。

注意 – 修改9/22以消除内部循环和If块 – 这假定每个文件夹将有一个文件当天的更新。 如果没有,您可能需要validation文件是否存在,然后再尝试打开它。