每天程序都会为我创建一个 Excel 文件,其中包含当天的一些数据。例如产品价格是多少、今天有多少人可以预约等等。
基于所有这些,我需要为员工做出一些预测和工作场所分配。问题是,我需要一直手动拖动所有这些信息。因此,为了使其自动化,我在单元格中放置了以下公式:
='c:\ABC\[ABC 29-01-14.xlsx]sheet'!a1
一切正常,但第二天我必须为ABC 30-01-14
每个单元格更改“ ”的文件名,这与手动输入数据相同。
所以我使用“ concatenate
”公式自动根据今天的日期更改日期。我使用“”公式indirect
将其转换为真正的公式,而不是文本字符串,并意识到它仅适用于打开的文件,而不适用于关闭的文件。
有没有办法在不使用 VBA 的情况下对关闭的文件执行此操作,因为我不知道,或者使用 VBA 但为白痴解释一下。
答案1
有趣的是,我一直在研究这个问题,因为对于一个庞大的 Excel 文档(每周将大约 50 个单元格拉入一个可以追溯到一年半前的文档中)
我已经能够从关闭的工作簿(excel 2013 和 2016)中提取数据,但现在在新文档中我遇到了麻烦。
我以前能够做到这一点的方法是创建一个连接公式,有一个宏副本,为每个新月份创建一个新行作为值,然后运行一个代码片段(感谢很久以前提供它的未命名的论坛向导)在宏中删除任何前导撇号,然后将每个单元格的公式拖下来。
正如上面所述,您确实需要确保它是完整的相对路径('c:\abc\[abcdoc.xlsx]sheet'
)。
片段:
'Removes Apostrophes from A14:AR14
Range("A14:AI14").Select
' Removes hidden apostrophes as first character
' Works on formulas as well as text and values
For Each CurrentCell In Selection
If CurrentCell.HasFormula = False Then
'Checks to make sure that procedure does not
'change cell with a formula to be only the value
CurrentCell.Formula = CurrentCell.Value
End If
Next