14.11.2006, 11:01 | #11 |
Moderator
|
Цитата:
Сообщение от blokva
Я понимаю, что "Автофильтр - это Excel.Application" но почему тогда через ADODB я его получаю как таблицу? Более того, автофильтр однажды включенный создает эту коллизию и даже если я его потом выключаю, сиравно получаю лишнюю таблицу в ADODB... еслиб какое свойство этой псевдотаблицы получать и анализировать...
---------------------------------------------------------------- 1. Создадим в Excel новую рабочую книгу. 2. В окне отладки (Ctrl+G) выполним команду: ? Thisworkbook.Names.Count 0 Т.е. коллекция имен (именованных диапазонов) у нас пустая 3. На первом листе создадим афтофильтр: в первой строке - заголовки колонок - Field1 и Field2 (соответственно в ячейки A1 и B1), в остальные строчки в ячейки A2:B10 введем какую-нибудь информацию для примера (допустим, числа от 1 до 9). 4. Стоя на любой ячейке диапазона, выполним команду меню: Данные / Фильтр / Автофильтр 5. В окне отладки (Ctrl+G) выполним команду: ? Thisworkbook.Names.Count 1 Т.е. в коллекции именованных диапазонов что-то появилось. 6. Что же это? ? Thisworkbook.Names(1).Name Лист1!_FilterDatabase ? Thisworkbook.Names(1).RefersTo =Лист1!$A$1:$B$10 7. Выключим автофильтр: Данные / Фильтр / Автофильтр 8. Повторим пункт 6 - всё то же самое. Таким образом, применение автофильтра создает на рабочем листе именованный диапазон со скрытым служебным именем. ADO в Excel воспринимает как "таблицы схемы" и рабочие листы, и именованные диапазоны ("схема" - рабочая книга). Возможно, есть какой-то признак, позволяющий различать листы и диапазоны в контексте ADO, но мне он пока неизвестен... |
|
|
За это сообщение автора поблагодарили: blokva (2). |