【问题标题】:Linking multiple Excel documents to an Access DB将多个 Excel 文档链接到 Access DB
【发布时间】:2015-11-03 20:25:42
【问题描述】:

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

我知道您可以将 Excel 工作簿链接到 Access,但我想不出一种方法让它每天链接到不同的工作簿,我想知道是否有一个查询来简单地获取那个单元格而不是链接整个 Excel 工作簿。

现在我有 Excel VBA,它可以打开每个 Excel 文件并将其复制并粘贴到我的工作簿中的相应行/列中......但是由于它执行了 200 多次,我想知道 Access 是否会有更快的解决方案.

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

【问题讨论】:

  • 如果您觉得我的回答有帮助,请告诉我 - 如果它对您有用,请接受答案。如果这不是您需要的,请添加评论,我也许可以澄清答案。谢谢。

标签: sql excel vba ms-access


【解决方案1】:
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

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

注意 - 修改 9/22 以消除内部循环和 If 块 - 这假设每个文件夹都有一个用于当天更新的文件。如果没有,您可能需要在尝试打开文件之前验证该文件是否存在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-23
    • 2018-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-22
    相关资源
    最近更新 更多