Здравствуйте. Часто бывает, что в таблицу нужно подтягивать значения из другого файла. Для таких ситуаций я использую подключение к опрашиваемому файлу через Query-запрос. И это действительно удобно, когда нужно вытянуть всю таблицу с листа. Но часто возникает необходимость вытащить значение определенной ячейки (без ВПР и проч., просто какой-то ячейки с листа). Можно, конечно, пойти путем создания ссылки на ячейку другого файла.
В случае, если опрашиваемый файл открыт, то формула выглядит так:
Код
=[Выгрузка_ПН.xls]ПРОДАЖИ_ТЕК'!$A$1
А если файл закрыт, то добавляется путь:
Код
='C:\Исходники\[Выгрузка_ПН.xls]ПРОДАЖИ_ТЕК'!$A$1
Но Excel в таких ситуациях ведет себя неопределенно - он то читает закрытые файлы, то не читает, выдавая #ЗНАЧ.
Поэтому вопрос - можно ли как-то сделать Query-запрос на ячейку? Если нет, то как корректно считывать данные с закрытых файлов&
Апострофф,это макросы. А как без них? Я открываю файл-приемник, нажимаю в нем "Обновить все", и данные подтягиваются. При использовании макросов это еще одна операция, которая может забыться в процессе.
andronus написал: Я открываю файл-приемник, нажимаю в нем "Обновить все", и данные подтягиваются. При использовании макросов это еще одна операция, которая может забыться в процессе.
Чтобы не забылась - вызывать макрос на событие открытия книги. И никакой "операции" )
Юрий М, я в макросах не силен, но попробовал повторить макрос с вашей ссылки. Создал файл "c:\источник.xlsx", в нем на единственном листе "Лист1" вбил в А1 значение "А1", добавил в книгу макросов макрос:
Цитата
Sub Get_Value_From_Close_Book_Excel4Macro() Dim sPath As String, sFile As String, sShName As String Dim sAddress As String, vData sPath = "C:\" '" sFile = "источник.xlsx" '" sShName = "Лист1" '"
Юрий М, прошу прощения, ссылку дал Апострофф, конечно же. В макросе из статьи нет события Workbook_Open, видимо оно в этом макросе не нужно (при этом, в других макросах оно есть).
Насчет тега кода - я вставил его, но в итоге получилась какая-то каша в одну строку, посему использовал цитату. Сейчас проверю код:
Код
Sub Get_Value_From_Close_Book_Excel4Macro()
Dim sPath As String, sFile As String, sShName As String
Dim sAddress As String, vData
sPath = "C:\" '"
sFile = "источник.xlsx" '"
sShName = "Лист1" '"
sAddress = "'" & sPath & "[" & sFile & "]" & sShName & "'!" & Range("A1").Address(ReferenceStyle:=xlR1C1) '"
vData = ExecuteExcel4Macro(sAddress)
End Sub
Очень странно. Получилась одна строка. Зашел в редактирование поста, пересохранил, всё норм.