Загрузка из Excel только отфильтрованных значений #616100


#0 by FeeL86
Добрый день. Помогите разобраться. Есть файл excel 2007  в нем настроен фильтр по колонке. Не могу понять как получить именно те данные которые отфильтровал excel. Пока что пришлось перебирать все строки и отлавливать нужные с помощью условия. Пример кода:
#1 by DrShad
считать всю область через COMSafeAray в ТЗ и наложить через запрос отборы из фильтра
#2 by smaharbA
через оле получаем значение фильтра - это и будет массив отфильтрованных значений
#3 by FeeL86
DrShad, есть метод который позволяет выгрузить в тз всю область? Или в цикле заливать все записи в тз?
#4 by FeeL86
smaharbA через OLE и запросом RecordSet-у можно сделать выборку. Но меня интересует как через ком объект Excel.Application можно обойти циклом результат фильтрации Excel`а
#5 by smaharbA
в все написано
#6 by smaharbA
для восьмерки элементарно про всю область Область=Лист.UsedRange; Массив=Область.Value;
#7 by smaharbA
автор с автофильром еще и не сообразил ? если это автофильтр Автофильтр=Лист.AutoFilter; Область=Лист.Range; с фильтрами и прочим скрытием точно так же
#8 by FeeL86
Вариант с автофильтром не возвращает данных
#9 by smaharbA
да ну на
#10 by FeeL86
Если делаю Лист.UsedRange.Value получаю массив всей области. Если Лист.AutoFilter.Range.SpecialCells.Value то возвращает массив с названиями колонок
#11 by Jaap Vduul
В не автофильтр, в исправился
#12 by Jaap Vduul
SpecialCells и не нужен, просто AutoFilter.Range.Value В справке к VBA так и написано: Use the AutoFilter property to return the AutoFilter object. Use the Filters property to return a collection of individual column filters. Use the Range property to return the Range object that represents the entire filtered range
#13 by FeeL86
Хорошо делаю Лист.AutoFilter.Range.Value и получаю аналогичный результат если бы написал Лист.UsedRange.Value
#14 by smaharbA
Для Каждого Область Из Области как то так, не адинеснег и тем боле восьмерку не знаю
#15 by smaharbA
нужен, иначе получишь всю область неофильтрованную
#16 by FeeL86
я уж понял что без SpecialCells т.к. число 12 = xlVisible т.е те области которые видим
#17 by Jaap Vduul
Тогда вот так: Лист.AutoFilter.Range.Offset.Resize(Лист.AutoFilter.Range.Rows.Count-1).SpecialCells.Value
#18 by smaharbA
в наверняка рабочий код, но вытянет и заголовок автофильтра ибо универсально для областей со скрытыми любым способом ячеейками - будь то фильтр, автофильтр, ручное скрытие, группировки и т.д.
#19 by FeeL86
Спасибо всем за помощь, разобрался
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С