
- •Часть 2.
- •8 Архитектура проекта
- •8.1 Введение (основные элементы проекта и их построение)
- •8.1.2 Этапы написания проекта
- •Установка (и удаление) элементов управления на лист Excel
- •Установка начальных значения свойств элементов управления
- •Установка порядка расположение элементов управления (установка одного элемента управления над другим)
- •Создание пользовательской формы
- •Создание модулей макросов проекта
- •Создание событийных процедур элементов управления, а так же событийных процедур родительских объектов
- •Быстрый переход в событийную процедуру элемента управления
- •8.1.3 Изменение свойств проекта
- •8.1.4 Установка и снятие защиты проекта
- •9 Доступность подпрограмм и полей модулей проектов
- •9.1 Введение
- •9.2 Надстройки проектов
- •9.2 Ссылка на другой проект
- •10 Отладка кода программы в vba редакторе
- •10.1 “Компиляция” проекта
- •10.2 Запуск подпрограмм, не имеющих входных параметров из редактора vba
- •10.3 Пошаговый запуск подпрограмм, не имеющих входных параметров
- •10.4 Непосредственный запуск формы из редактора vba
- •10.5 Точки останова и оператор Stop
- •10.6 Аварийное прерывание работы программы приложением Excel
- •10.7 Принудительная остановка и принудительное прерывание программы пользователем
- •10.8 Окно локальных переменных и Окно отладки
- •11 Справочная система vba
- •11.1 Переход к справочной системе
- •11.2 Список имен потомков, методов и свойств объектов в окне редактора модуля
- •11.3 Просмотр списка операторов vba в окне редактора модуля (просмотр библиотек)
- •11.4 Окно просмотра свойств, методов, потомков и родителей объектов
- •12 Дополнительная информация
- •12.1 Параметры работы редактора vba
- •12.2 Защита от макровирусов
- •12.3 Причины, по которым код vba проекта может не исполняться
- •Приложение 1 Задание 1 (автозаполнение пола)
- •Задание 2 (автозаполнение комментариев к числам)
- •Задание 3 (заучиватель иностранных слов)
- •Задание 4 (телефонная книжка с поиском)
- •Задание 5 (программирование связей таблиц Excel)
- •Задание 6 (защита служебных полей таблицы Excel)
- •Приложение 2 (Программирование через редактирование макроса) Введение
- •Запись макроса в книгу Excel
- •Запуск макроса из меню.
- •Быстрый переход в код макроса
- •Пример создание процедуры через макрос.
- •Некоторые замечания по запуску макроса из событийных процедур
- •Назначение управляющих клавиш для запуска готового макроса Назначение управляющих клавиш макросам через меню приложений
- •Программное назначение управляющих клавиш макросам
- •Приложение 3( Создание меню ) Введение
- •Типы меню приложений
- •Создание (и удаление) подпунктов главного меню через меню приложений Создание (и удаление) подпункта главного меню
- •Создание (и удаление) пункта меню к макросу
- •Удаление меню
- •Добавление пунктов в меню
- •Свойства и методы пунктов меню
- •Переключатель в пункте меню
- •Коды пиктограмм пункта меню
- •Односеансное контекстное меню
- •После выбора пункта ПервыйУровень
- •После выбора пункта ВторойУровень1 Назначение управляющих клавиш к пункту меню
- •Приложение 4 ( Программная обработка модулей vba ) Введение
- •Экспорт модуля проекта в файл
- •Импорт модуля проекта из файла
- •Импорт модуля через “организатор” (данный код только для Word приложения)
- •Создание свойств и методов пользовательского класса
- •Создание событий пользовательского класса
- •Приложение 6 (Ссылка на приложение ms Office)
- •Приложение 7 (связь с таблицами и запросами базы данных) Введение
- •Связь с базой данных через указатели
- •Непосредственная загрузка таблицы базы данных в Excel таблицу
- •Форма для интерактивной работы с записью таблицы базы данных
- •С записями таблицы базы данных
- •Браузер таблиц и запросов базы данных
- •Методы поиска объекта Recordset
- •Пример использования метода Seek
- •Пример использования методов Find
- •Приложение 8 (Обращение к api-функциям) Введение
- •Скрытие и отображение панели задач через api функции
- •Запуск ярлыка и исполняемых файлов через api функцию
- •Приложение 9 (Основные понятия визуального программирования на доступных примерах)
- •Яблоко1.Сплющить
- •8 Архитектура проекта 3
- •8.1 Введение (основные элементы проекта и их построение) 3
- •Приложение 3( Создание меню ) 64
- •Приложение 4 ( Программная обработка модулей vba ) 90
- •Приложение 5 (Создание модуля класса) 94
- •Приложение 6 (Ссылка на приложение ms Office) 108 Приложение 7 (связь с таблицами и запросами базы данных) 113
- •Часть 2
Непосредственная загрузка таблицы базы данных в Excel таблицу
Для непосредственной загрузки таблицы базы данных используют метод объекта Cells – CopyFromRecordset, который имеет следующий формат вызова:
CopyFromRecordset Data [, MaxRows] [, MaxColumns]
Data – имя переменной типа Recordset, которая является указателем на таблицу базы данных, и с которой делают копию в лист Excel. (Как создать указатель на таблицу базы данных, было рассказано нами в предыдущем параграфе данной главы.)
MaxRows – номер последней записи для копирования в лист Excel, если этот параметр опущен, то копируются все записи таблицы базы данных.
MaxColumns – номер последнего поля для копирования в лист Excel, если этот параметр опущен, то копируются все поля таблицы базы данных.
В примерах приведенных ниже загружают таблицу базы данных в активный лист Excel. Т.к. в этих примерах не указаны родители объекта Cells. Естественно, что их можно указать через соответствующие объекты. Переменные i и j определяют строку и столбец ячейки, с которой начнется загрузка таблицы базы данных. Имя объекта Workspaces(0) в указанных примерах можно опустить.
‘Объявляем переменную для ссылки на базу данных
Dim db As Database
‘Объявляем переменную для ссылки на таблицу базы данных
Dim r As Recordset
Set db = Workspaces(0).OpenDatabase("Полный путь к базе и ее имя")
Set r = db.OpenRecordset("Имя загружаемой таблицы")
Cells(i, j).CopyFromRecordset r
r.Close
db.Close
‘можно загрузить данные в Excel таблицу и на прямую без указателей
Cells(i, j).CopyFromRecordset _
Workspaces(0). ("Полный путь к базе и ее имя").OpenRecordset( _
"Имя загружаемой таблицы")
В данных примерах в лист Excel загружается только записи таблицы базы данных. Иногда пользователю необходимо загрузит в лист и имена полей таблицы базы данных. Для этого надо воспользоваться свойствами объекта Fields, о которых мы рассказали в предыдущем параграфе данной главы.
Пример загрузки таблицы базы данных с именами полей:
Dim j As Long
'Объявляем переменную для ссылки на базу данных
Dim db As Database
'Объявляем переменную для ссылки на таблицу базы данных
Dim r As Recordset
Set db = OpenDatabase("c:\Мои документы\R.mdb")
Set r = db.OpenRecordset("Таблица1")
‘загружаем записи таблицы базы данных в активный лист
‘Excel начиная со 2 строки
Cells( 2, 1).CopyFromRecordset r
‘выводим имена полей базы данных в первую строку активного листа Excel
For j = 0 To r.Fields.Count - 1
Cells( 1, j + 1).Value = r.Fields( j ).Name
Next j
r.Close
db.Close
Форма для интерактивной работы с записью таблицы базы данных
Существует множество элементов управления VBA, которые позволяют подключиться к таблице базы данных непосредственно через установку значения их свойств. Например, объект, Adodc для непосредственного подключения к базе данных, DBGrid – для просмотра таблицы базы данных и ее редактирования. К сожалению, эти элементы управления не всегда поставляются вместе с Excel и работают нестабильно в различных версиях Excel. В нашем примере используются самые распространенные элементы управления для просмотра таблицы базы данных. Указанной нами формой возможно просматривать числовые, строковые, Memo и логические поля таблицы базы данных. (для просмотра поля Memo необходимо установить многострочный режим объекта TextBox ). Так же возможно использования полей Data. Значение даты вводится в поле следующим образом: Число.НомерМесяца.Год . Для ввода логического поля мы применили объект выключатель. В качестве навигатора по записям таблицы базы данных используется объект полосы прокрутки. Для того, что бы наша форма работала, необходимо только подключить библиотеку Microsoft DAO 3.5 object library. Вы можете экспортировать модуль формы во внешний файл, для последующего его импорта в другой проект. В другом проекте будет очень просто переделать нашу форму под загрузку другой таблицы базы данных. Для испытания формы вам нужно будет иметь базу данных созданную в приложении Access, которая будет содержать в себе, по крайней мере, одну таблицу. В примере указанно как подключать поля таблицы различного типа. Учтите, что поля в таблице начинают нумероваться с 0 индекса. Не запускайте нашу форму в том случаи, если с базой данных которую она загружает, работает Access. Программа нашей формы составлена так, что исключается ошибка ввода формата данных в полях. Если введен не правильный формат данных, то поле таблицы базы данных не получает нового значения или получает нулевое или пустое значение. На рисунке ниже показана наша форма.
Рис 27 Вид формы для интерактивной работы