Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
ВПР из закрытого файла
 
Доброе утро!

Зашел в тупик с поиском решения такой задачи.
Пытаюсь средствами VBA подтягивать данные посредством функции ВПР. Все вроде просто, но из-за того, что данные для поиска находятся в другой книге, ни как не получается.

Пример строки:
Range("A1").Formula = "=VLOOKUP(КодСотрудника,'D:\Продажи\СПБ\сводная.xlsx'!ОбъемПродаж,3,0)"

Указанный выше пример работает, но как результат функции передать в переменную, а не в Range("A1").Formula?
Если записать данную формулу в виде:

MyResult = WorksheetFunction.VLookup(КодСотрудника, "'D:\Продажи\СПБ\сводная.xlsx'!ОбъемПродаж", 3, 0)

то функция уже перестает работать.
Изменено: Andrew - 17 Апр 2013 11:13:25
 
Почитайте тему в Копилке:
http://www.planetaexcel.ru/forum/?PAGE_NAME=read&FID=2&TID=11

там последним сообщением я давал ответ как адаптировать функцию пользователя для работы с закрытой книгой.
Только учитывайте - сначала необходимо диапазон указать когда книга открыта. Далее ничего менять уже не надо будет - при закрытии книги диапазон сам станет "ссылкой на закрытую книгу"


Похоже я неверно понял(смутило английское название функции). ВПР не может изначально принимать данные закрытой книги. Сначала книгу надо открыть, указать диапазон, а затем уже...Либо открыть, записать данные таблицы в массив, а массив в ВПР в макросе.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Андрей Васильев, у Вас ведь работает первый пример кода. Осталось только присвоить переменной значение ячейки. Я в таких случаях делаю один очень скрытый лист и использую его для подобных действий.
 
Ясно. Спасибо.
Просто думал, что можно все-таки как-то обойтись без открытия книги и без дополнительных листов/столбцов.
 
Можно открыть так, что книги не будет видно:
Код
Sub bb()
Dim wb As Workbook
Set wb = GetObject("D:\Продажи\СПБ\сводная.xlsx")
'...
MyResult = WorksheetFunction.VLookup(КодСотрудника, wb.Names("ОбъемПродаж").RefersToRange, 3, 0)
'...
wb.Close 0
End Sub
 
Цитата
Казанский пишет:
Можно открыть так, что книги не будет видно:
Самое то.
Спасибо большое!
Страницы: 1
Читают тему (гостей: 1)
Наверх