VBA получает значение формулы файла из закрытых книг - PullRequest
0 голосов
/ 06 ноября 2019

Я читаю из коллекции книг Excel, используя VBA (циклически просматривая файлы, собранные с помощью Dir). Поскольку существует более 70 файлов (и их количество увеличивается), я предпочитаю не открывать файлы из соображений эффективности. Каждая исходная рабочая книга содержит следующую формулу в ячейке J11 для автоматического предоставления своего имени файла.

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

Однако для небольшого числа файлов я получаю одинаковое неверное значение из исходной ячейки J11, когда использую любой изследующие подходы (в обоих случаях я получаю одинаковое значение, возвращаемое для 3 из 70+ файлов).

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 был сохранен позже и возвращаетневерное значение "A10" в ячейке J11. Примечание: когда я открываю каждый файл непосредственно в Excel cel, J11 всегда показывает правильное имя файла.

Спасибо DOM

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...