Функция GetValue предназначена для получения данных из закрытой книги Excel
Использовать такой способ имеет смысл только в том случае, если из большого файла надо получить значения только нескольких ячеек (или одного диапазона ячеек), и при этом точно известно расположение на листе интересующих нас ячеек, и имена листов
Пример использования функции:
Sub ПримерИспользования_GetValue() p = "C:\Documents and Settings\Бухгалтерия" ' папка с файлом f = "расход.xls" ' имя файла s = "доходы" ' название листа a = "D145" ' интересующая нас ячейка ' выполняем загрузку данных из закрытой книги Excel ЗначениеЯчейки = GetValue(p, f, s, a) Debug.Print ЗначениеЯчейки ' выводим результат в окно Immediate End Sub
Посмотрите также результат использования этой функции внутри цикла
для получения значений ячеек из списка найденных файлов
Код функции GetValue:
Function GetValue(path, file, sheet, ref) 'Функция GetValue получает в качестве параметров: ' path – путь к закрытому файлу (например, "d:\files"); ' file – название рабочей книги (например, "budget.xls"); ' sheet – название рабочего листа (например, "Лист1"); ' ref – ссылка на ячейку (например, "C4"). If Right(path, 1) <> "\" Then path = path & "\" ' проверяем наличие файла по заданному пути If Dir(path & file) = "" Then GetValue = "Файл не найден": Exit Function ' формируем строку запроса arg$ = "'" & path & "[" & file & "]" & sheet & "'!" & _ Range(ref).Range("A1").Address(, , xlR1C1) ' считываем значение из закрытой книги GetValue = ExecuteExcel4Macro(arg$) ' вместо ошибки возвращаем сообщение об ошибке ' к примеру, если лист не найден, или указана несуществующая ячейка If IsError(GetValue) Then GetValue = "<ошибка>" End Function
Ещё один вариант этой функции:
Function GetValue(ByVal filepath$, ByVal SheetName$, ByVal CellAddress$) 'Функция GetValue получает в качестве параметров: ' filepath$ = полный путь к файлу Excel (например, "d:\files\budget.xls"); ' SheetName$ – название рабочего листа (например, "Лист1"); ' CellAddress$ – ссылка на ячейку (например, "C4"). On Error Resume Next ' проверяем наличие файла по заданному пути If Dir(filepath$) = "" Then GetValue = "Файл не найден": Exit Function Dim arr arr = Split(filepath$, "\") arr(UBound(arr)) = "[" & arr(UBound(arr)) & "]" filepath$ = Join(arr, "\") ' формируем строку запроса arg$ = "'" & filepath$ & SheetName$ & "'!" & Range(CellAddress$).Range("A1").Address(, , xlR1C1) ' считываем значение из закрытой книги GetValue = ExecuteExcel4Macro(arg$) ' вместо ошибки возвращаем сообщение об ошибке ' к примеру, если лист не найден, или указана несуществующая ячейка If IsError(GetValue) Then GetValue = "<ошибка>" End Function
Комментарии
Доброго времени суток. Пытаюсь "скрестить" FilenamesCollection.xls с функцией GetValue
Указываю путь к папке (С1) наименование файла В19 наименование листа в файле Sheet1 и ячейку данные с которой пытаюсь вытянуть С15 - выкидывает ошибку ЗНАЧ... Поскажите где моя ошибка?
в ДНК? )))
Отправить комментарий