VBA从关闭的工作簿中获取文件名公式值

我正在阅读使用VBA的excel工作簿集合(循环浏览使用Dir收集的文件)。因为有70多个文件(并且正在增加),所以出于效率考虑,我不愿打开文件。每个源工作簿的单元格J11中都包含以下公式,以自动提供其文件名。

  “=MID(CELL("filename"),SEARCH("[",CELL("filename"))+1,SEARCH(".xls",CELL("filename"))-SEARCH("[",CELL("filename"))-1)”

但是,对于少数文件,当我使用以下两种方法之一时,我会从源单元格J11中获得相同的不正确值(在两种情况下,我都为70多个文件中的3个返回了相同的值)。

1。 ExecuteExcel4Macro

sourceCell = "J11" 
workbookCell = "'" & filePath & "[" & fileName & "]" & sourceSheet & "'!" & Range(sourceCell).Range("A1").Address(,xlR1C1)
getvalue = ExecuteExcel4Macro(workbookCell)

2。直接参考

Range(targetcell).Select
Selection.Formula = "='" & filePath & "[" & fileName & "]" & sourceSheet & "'!" & Range(sourceCell).Range("A1").Address(,xlR1C1)
Selection.Formula = Selection.Value

但是当我使用以下命令明确打开文件时:

 Workbooks.Open fileName:=(filePath + fileName),UpdateLinks:=False
 getvalue = activeWorkbook.Sheets(sourceSheet).Range("J11").Value

在所有情况下我都得到正确的值。我当然可以使用包含VBA循环中文件名的文件名变量,但我想理解为什么上述两种方法对于一组文件都不一致,并且当值不正确时也给出相同的值。我认为这可能与文件时间戳有关-例如,文件A09.xls和A10.xls是在同一天创建的(通过打开A08.xls并另存为每个新实例),但是A09稍后保存并返回单元格J11中的值“ A10”不正确。注意:当我直接在excel cel中打开每个文件时,J11始终显示正确的文件名。

感谢DOM

zijijie 回答:VBA从关闭的工作簿中获取文件名公式值

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3151522.html

大家都在问