Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2009, 14:28   #1
nikolai_P
Форумчанин Подтвердите свой е-майл
 
Регистрация: 28.04.2008
Сообщений: 116
По умолчанию Работа с EXCEL...

Добрый день!
Я открываю эксель и добавляю фильтр.
Код:
Excel := CreateOleObject('Excel.Application');
DBook := Excel.WorkBooks.Open
    ('C:\Documents and Settings\Николай\Рабочий стол\Проба.xls');
Excel.Visible := True;
Sheet := Dbook.Sheets.Item[1];
Sheet.Cells[1, 1].AutoFilter;
Подскажите, пожалуйста, как узнать значения фильтра в каком-либо столбце, для того чтобы их потом можно было перебирать?
nikolai_P вне форума Ответить с цитированием
Старый 24.02.2009, 16:05   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Узнать доступные критерии автофильтра (в отличии от расширенного фильтра) вряд ли получится.

А вот установить нужные критерии для автофильтра - без проблем.

Например, так:
Код:
Sheet.Cells[1, 1].AutoFilter(3,'>=8',xlAnd,EmptyParam,True);
А после этого уже и считывать их: (пример на VBA)
Код:
    Range("C4:E6").AutoFilter 1, ">1500"

    bool_IsFilterOn = ActiveSheet.AutoFilter.Filters(1).On
    str_Filter_Criteria1 = ActiveSheet.AutoFilter.Filters(1).Criteria1
    
    Debug.Print bool_IsFilterOn, str_Filter_Criteria1
EducatedFool вне форума Ответить с цитированием
Старый 24.02.2009, 17:09   #3
nikolai_P
Форумчанин Подтвердите свой е-майл
 
Регистрация: 28.04.2008
Сообщений: 116
По умолчанию

Не совсем понял, что Вы имеете ввиду. Можете описать код?

P.S. Можно заставить эксель выбрать первый пункт автофильтра, я имею введу не конктретное значение параметра.
nikolai_P вне форума Ответить с цитированием
Старый 25.02.2009, 10:00   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Можно заставить эксель выбрать первый пункт автофильтра
Скорее всего нет...
Для автофильтра есть только одна функция - вот её пример:
Sheet.Cells[1, 1].AutoFilter(3,'>=8',xlAnd,EmptyPara m,True)
которая возвращает логическое значение, при этом устанавливая нужные Вам параметры автофильтра.
Считать встроенные параметры автофильтра не получится.
По сути, этих встроенных параметров (которые Вы видите в интерфейсе Excel), у автофильтра просто нет
Их отображает сам Excel при щелчке на ячейке с автофильтром.
А вот когда Вы щелкаете на одном из предложенных Excel-ем параметров - только тогда он устанавливает нужное свойство для автофильтра.
По крайней мере, в объектной модели Excel мне не удалось найти ничего подобного...

В любом случае, это лучше спрашивать в разделе Microsoft Excel

Цитата:
Можете описать код?
Нет. Не знаком с синтаксисом Delphi...

Последний раз редактировалось EducatedFool; 25.02.2009 в 10:03.
EducatedFool вне форума Ответить с цитированием
Старый 25.02.2009, 13:51   #5
nikolai_P
Форумчанин Подтвердите свой е-майл
 
Регистрация: 28.04.2008
Сообщений: 116
По умолчанию

Спасибо за ответ!

Цитата:
По сути, этих встроенных параметров (которые Вы видите в интерфейсе Excel), у автофильтра просто нет
Их отображает сам Excel при щелчке на ячейке с автофильтром.
Давайте рассмотрим действия Excel!

Я выбираю большой массив ячеек, затем нажимаю кнопку фильт. После этого в первой строке выделенного диапазона появляются кнопки. Если нажать на любую кнопочку, то сразу же, появляется возможность выбора параметров по указанному столбцу.

Если я Вас правильно понял, то значения которые появляются, Excel формирует при каждом нажатии заново?
nikolai_P вне форума Ответить с цитированием
Старый 25.02.2009, 14:09   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Если я Вас правильно понял, то значения которые появляются, Excel формирует при каждом нажатии заново?
Именно об этом я и говорил.
Не могу утверждать, но, судя по тому, что в объектной модели Excel отсутствует что-либо похожее на методы и свойства для работы с этими параметрами автофильтра, - так оно и есть.

PS: Добавьте в новой теме ссылку на эту тему, чтобы не было лишних вопросов.
EducatedFool вне форума Ответить с цитированием
Старый 25.02.2009, 14:58   #7
nikolai_P
Форумчанин Подтвердите свой е-майл
 
Регистрация: 28.04.2008
Сообщений: 116
По умолчанию

Итак, ВЫВОД!

Excel формирует параметры фильтра (условия фильтрации данных) при каждом нажатии на кнопку.

Это действительно так! Если выбрать большой массив ячеек, затем: 1. выбрать фильт, 2. выбрать параментр фильтрации данных по столбцу, то можно заметить процесс "думанья" Excel на 2 этапе, а не на 1!
nikolai_P вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа Delphi с рисунком в Excel? Alex-as-hac Общие вопросы Delphi 0 02.12.2008 09:59
delphi и excel работа с ячейками Doget Помощь студентам 1 04.08.2008 08:13
Работа с Excel и БД Paranoid БД в Delphi 2 04.01.2007 17:50