Страницы: 1
RSS
Подтянуть данные из другой закрытой книги при помощи VBA, замена функции ВПР
 
Уважаемы форумчане, прошу помочь.
Хотел написать функцию, которая бы, используя аргумент Дату, возвращала бы курс на эту дату, найденный через ВПР в другой закрытой книге.
Если сделать такую функцию, которая бы работала бы внутри книги, то получилось, а как правильно написать функцию, что бы она ВПР-ла эту дату в другой закрытой книги? Полагаю, что адрес как-то неправильно указываю.
Код
Function Курс(value)
Курс = WorksheetFunction.VLookup(value, ActiveSheet.Range("A1:B10000"), 2, 0) ' внутри книги работает
'Курс = WorksheetFunction.VLookup(value, "'\\192.168.115.246\finance\[Курс.xlsm]Лист1'!$A:$B", 2, 0) ' в закрытой другой книге не работает
End Function
 
ЕМНИП, то ВПР() не работает с закрытыми книгами.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
В чистом виде (без VBA) ВПР тянет данные из закрытых книг. Попробовал.
 
Сначала надо открыть книгу-источник, затем записать формулу и потом закрыть. Тогда ВПР будет тянуть последнее запомненное значение, которое ВПР подсмотрел в книге-источнике.
Зачем Вам это вообще? Ведь если открыть книгу-источник без открытия книги с ВПР и изменить там данные - то они не обновятся в книге с ВПР - ВПР так и будет возвращать последнее значение, которое было когда обе книги были открыты. И придется обновлять связи для обновления данных.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
The_Prist написал:
Ведь если открыть книгу-источник без открытия книги с ВПР и изменить там данные - то они не обновятся в книге с ВПР - ВПР так и будет возвращать последнее значение, которое было когда обе книги были открыты.
В 2003 работает иначе, только что проверил - прекрасно тянет изменившиеся из закрытой книги.
 
Странно. Без обновления связей у меня измененные данные не тянет. Просит обновить. Да и в 2003 как я помню ничего в этом плане не менялось - данные о источнике хранятся внутри книги. Игорь, а можешь последовательность действий написать?
Я делаю как:
Открыты две книги - Книга1 и КнигаВПР.
В КнигаВПР записываю функцию ВПР, в качестве таблицы указываю диапазон из Книга1.
Далее закрываю Книга1.
Сохраняю КнигаВПР, закрываю.
Открываю Книга1 и изменяю данные для таблицы ВПР.
Закрываю Книга1.
Открываю КнигаВПР - получаю запрос на обновление связей. Если не обновить - то значение, возвращаемое ВПР не изменяется.

У тебя может в настройках установлено автоматическое обновление без запроса?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Ну да, у меня на автомате, без запросов обновляет.
И это логично - хочешь чтоб данные обновились - их нужно обновить :)
 
Так я про это и написал. А что происходит при обновлении? Правильно, Excel, скрытно для нас "открывает" книгу. Поэтому записать в ячейку сразу полный путь к книге и ожидать, что формула заработает не очень правильно, т.к. не заработает.
Как я уже написал: открываем обе книги, прописываем ВПР со ссылкой просто на другую открытую книгу и потом вторую книгу можно закрыть. Тогда все сработает.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1
Наверх