- •1. Макросы и технологии управления запуском пользовательских процедур.
- •2. Основные синтаксические принципы vba. Переменные и константы (область видимости переменных, правила выбора идентификатора)
- •3. Типы данных. Принципы выбора типа данных. Встроенные функции преобразования и проверки типов данных.
- •4. Управляющие конструкции vba. Функции заменители синтаксических конструкций.
- •5. Массивы. Встроенные функции для работы с массивами.
- •Динамические массивы
- •6.Пользовательские функции для массивов рабочего листа Excel.
- •7. Особенности разработки пользовательских функций на vba. Способ передачи параметров.
- •8. Встроенные функции для работы со строковыми и числовыми значениями.
- •9. Встроенные функции для работы с датой и временем.
- •10. Встроенные функции для форматирования данных.
- •11. Классы и объекты на vba.
- •12.Технологии управления приложением и разработка пользовательских событий.
- •13.Технология построения обработчиков событий пользовательских классов. Объявление WithEvents.
- •14. Использование объекта Err и обработка ошибок.
- •15. Разработка шаблона с диалоговым окном для ввода данных. Использование пользовательских форм для управления приложением.
- •16. Использование объектов Range и Selection для управления приложением. Коллекции объектов.
- •17. Word : Объектная модель. Объект Application (свойства, методы)
- •18. Word : коллекция Documents и объект Document
- •19. Объект Bookmark.
- •20. Excel : объектная модель. Объект Application ( свойства, методы ).
- •21. Excel: коллекция WorkBooks и объект WorkSheet
- •22. Коллекция Sheets. Объект WorkSheets (свойства, методы).
- •23. Коллекция QueryTables, объект QueryTable.
- •24. Сводные таблицы.
- •26. Основные этапы разработки приложений в Access
- •27. Access : объектная модель. Объект Application (свойства, методы)
- •28. Объект DoCmd
- •29. Создание пользовательских форм в Access . Свойства, методы, события.
- •30. Отчеты в Access
- •31. Outlook. Объект Application (свойства, методы).
- •32. Outlook. Объект NameSpace.
- •34. Коллeкция Folders.
- •35. Коллекция Items и объекты элементов Outlook
- •36. Система объектов в PowerPoint.
23. Коллекция QueryTables, объект QueryTable.
Основное назначение объекта QueryTable — работа с набором значений, возвращаемых из базы данных. Этот объект доступен в Excel и при помощи графического интерфейса через меню Данные -> Импорт внешних данных -> Импортировать данные. При помощи объектов QueryTable можно разместить набор записей, полученных с источника данных, на листе Excel для выполнения с ним различных операций (например, анализа). QueryTable удобно использовать для "односторонней" работы с источником данных, когда данные только скачиваются с источника в Excel, но изменять их с сохранением изменений на источнике не нужно.
Как обычно, для того, чтобы создать объект QueryTable и разместить его на листе, нужно использовать специальную коллекцию QueryTables, которая принадлежит рабочему листу (объекту Worksheet) и доступна через его одноименное свойство. Свойства и методы объекта QueryTables — стандартные, как у большинства рассмотренных нами коллекций. Подробного рассмотрения заслуживает только метод Add(), при помощи которого и создается объект QueryTable (с одновременным добавлением в коллекцию). Этот метод принимает три параметра:
-
Connection — источник данных для QueryTable (в виде объекта типа Variant).
-
Destination — куда вставлять полученную QueryTable. Передается объект Range, и вставка производится начиная с верхнего левого угла этой ячейки.
-
SQL — при помощи этого необязательного параметра можно определить SQL-запрос, который будет выполняться к источнику данных ODBC. Тот же запрос можно определить при помощи одноименного свойства объекта QueryTable.
Непосредственно помещение объекта QueryTable на лист производится при помощи метода QueryTable.Refresh(). Без него объект QueryTable будет создан только в оперативной памяти.
Теперь — о самых важных свойствах и методах объекта QueryTable:
-
BackgroundQuery — может ли выполнение запроса производится в фоновом режиме, пока пользователь выполняет в Excel другие действия. По умолчанию true, в false следует переводить только тогда, когда пользователь действиями в Excel может как-то помешать нормальной работе приложения.
-
CommandText — текст команды SQL, то есть текст запроса, который передается на источник. Сосуществует совместно с аналогичным свойством SQL (которое оставлено для обратной совместимости) и имеет перед ним приоритет. При передаче QueryTable готового Recordset недоступно.
-
CommandType — тип передаваемой в CommandText команды (вся таблица, SQL-запрос, имя куба и т.п.). При работе с готовым Recordset также недоступно.
-
Connection — строка подключения, та самая, которую можно передать при вызове метода Add() коллекции QueryTables. Опять-таки при работе с готовым Recordset недоступно.
-
Destination — второй параметр, который передавался методу Add(). Возвращает объект Range, представляющий первую (верхнюю левую ячейку) диапазона, занимаемого на листе объектом QueryTable. После создания QueryTable доступен только на чтение.
-
EnableEditing — может ли пользователь изменять на графическом экране свойства объекта QueryTable. Если перевести в false (по умолчанию true), то пользователь сможет только обновлять QueryTable.
-
EnableRefresh — может ли пользователь обновлять QueryTable, получая заново данные (с источника или Recordset);
-
FieldNames — очень полезное свойство. Позволяет отключить вставку полученных с источника названий столбцов в первую строку QueryTable. По умолчанию true (вставлять названия столбцов).
-
Name — имя объекта QueryTable. По умолчанию — ExternalData_номер.
-
Parameters — возможность получить доступ к коллекции Parameters, набору параметров запроса. Возможности практически такие же, как для работы с параметрами объекта Recordset.
-
PreserveColumnInfo и PreserveFormatting — сохранять ли информацию о столбцах (сортировке, фильтрации и т.п.) и форматировании после обновления QueryTable. По умолчанию — все сохранять.
-
QueryType — возможность выяснить (свойство доступно только на чтение), что использовалось при создании QueryTable — Recordset, прямой доступ к таблице, SQL-запрос и т.п.
-
Recordset — возможность получить ссылку на объект Recordset, который использовался для создания QueryTable или сменить его для объекта QueryTable (изменения вступят в силу только после вызова метода Refresh()).
-
Refreshing — это свойство принимает значение true на момент выполнения фонового запроса к источнику. Если выполнение запроса слишком затянулось, его можно прервать при помощи метода CancelRefresh().
-
ResultRange — пожалуй, самое важное свойство объекта QueryTable. Как правило, данные из базы данных перекачиваются в Excel для дальнейшей обработки. Это свойство позволяет получить диапазон, который включает в себя все ячейки, вставленные на лист из объекта QueryTable, чтобы потом применить к ним различные функции (обычно по столбцам или по строкам). Чтобы этот метод сработал, обязательно нужно провести вставку данных QueryTable на лист при помощи метода Refresh. После этого можно использовать то, что возвращает это свойство, как обычный диапазон. Самый простой способ продемонстрировать работу эту метода — воспользоваться кодом
У объекта QueryTable есть также два события: BeforeRefresh и AfterRefresh. Они срабатывают соответственно перед началом загрузки данных с источника и после окончания загрузки.