- •Учреждение образования "Гродненский государственный профессионально-технический колледж приборостроения"
- •1. Синтаксис и программные конструкции vba
- •1.1 Основы синтаксиса языка vba
- •1.2 Операторы vba
- •1.3 Переменные и типы данных
- •Задание для самостоятельной работы 1.1: Работа с переменными и операторами
- •1.4 Константы
- •1.5 Операторы условного и безусловного перехода
- •1.5.1 Операторы условного и безусловного перехода. Оператор If… Then... Else
- •1.5.2 Оператор Select Case
- •1.5.3 Оператор GoTo
- •Задание для самостоятельной работы 1.2: Работа с операторами условного перехода
- •1.6 Работа с циклами
- •1.7 Массивы
- •Задание для самостоятельной работы 1.3 Работа с циклами
- •1.8 Процедуры и функции
- •1.8.1 Процедуры и функции. Виды процедур
- •1.8.2 Область видимости процедур
- •1.8.3 Объявление процедур
- •1.8.4 Передача параметров
- •1.8.5 Запуск и завершение работы процедур
- •Задание для самостоятельной работы 1.4 Работа с процедурами и функциями
- •1.9 Встроенные функции языка Visual Basic For Applications
- •1.9.1 Встроенные функции языка Visual Basic For Applications
- •1.9.2 Функции преобразования и проверки типов данных
- •1.9.3 Строковые функции
- •1.9.4 Функции для работы с числовыми значениями
- •1.9.5 Функции для работы с датой и временем
- •1.9.6 Функции для форматирования данных
- •1.9.7 Функции для организации взаимодействия с пользователем
- •1.9.8 Функции — заменители синтаксических конструкций
- •1.9.9 Функции для работы с массивами
- •1.9.10 Функции для работы с файловой системой
- •1.9.11 Прочие функции vba
- •2. Работа с объектами и объектные модели
- •2.1 Что такое классы и объекты
- •2.2 Создание и удаление объектов
- •2.3 Методы объекта
- •2.4 Свойства объекта
- •2.5 События объекта и объявление WithEvents
- •2.6 Просмотр объектов
- •2.7 Объектные модели
- •Задание для самостоятельной работы 2.1 Windows Script Host в приложениях vba
- •3. Формы, элементы управления и события
- •3.1 Для чего нужны формы
- •3.2 Создание форм и самые важные свойства и методы форм
- •3.3 Элементы управления
- •3.3.1 Что такое элементы управления
- •3.3.2 Элемент управления Label (надпись)
- •3.3.3 Элемент управления TextBox (текстовое поле)
- •3.3.4 Элемент управления ComboBox (комбинированный список)
- •3.3.5 Элемент управления ListBox (список)
- •3.3.6 Элементы управления CheckBox (флажок) и ToggleButton (кнопка с фиксацией)
- •3.3.7 Элементы управления OptionButton (переключатель) и Frame (рамка)
- •3.3.8 Элемент управления CommandButton (кнопка)
- •3.3.9 Элементы управления ScrollBar (полоса прокрутки) и SpinButton (счетчик)
- •3.3.10 Элементы управления TabStrip (набор вкладок) и MultiPage (набор страниц)
- •3.3.11 Элемент управления Image (рисунок)
- •3.3.12 Применение дополнительных элементов управления. Элементы управления Microsoft Web Browser, Calendar, RefEdit
- •Задание для самостоятельной работы 3.1 Работа с элементами управления
- •4. Работа с панелями инструментов и меню
- •Задание для самостоятельной работы 4.1 Работа с панелями инструментов, меню и помощником
- •5. Программирование в Word
- •5.1 Зачем программировать в Word
- •5.2 Введение в программирование в Word. Обзор объектной модели Word
- •5.3 Объект Application
- •5.3.1 Как работать с объектом Application
- •5.3.2 Свойства, методы и события объекта Application
- •5.4 Коллекция Documents и объекты Document
- •5.4.1 Как работать с коллекцией Documents
- •5.4.2 Свойства и методы коллекции Documents
- •5.4.3 Работа с объектом Document , его свойства и методы
- •5.5 Объекты Selection , Range и Bookmark
- •5.5.1 Работа с объектом Selection
- •5.5.2 Свойства и методы объекта Selection
- •5.5.3 Работа с объектом Range, его свойства и методы
- •5.5.4 Объект Bookmark
- •5.6 Другие объекты Word
- •5.6.1 Коллекция AddIns и объекты AddIn
- •5.6.2 Объект AutoCorrect
- •5.6.3 Коллекция Languages и объект Language
- •5.6.4 Объект Options
- •5.6.5 Объекты Find и Replacement
- •5.6.6 Объекты Font и ParagraphFormat
- •5.6.7 Объект PageSetup
- •5.6.8 Объекты Table , Column, Rowи Cell
- •5.6.9 Объект System
- •5.6.10 Коллекция Tasks и объект Task
- •5.6.11 Коллекция Windows и объект Window
- •Задание для самостоятельной работы 5.1 Программное формирование документа в Word
- •6. Программирование в Excel
- •6.1 Зачем программировать в Excel
- •6.2 Объект Application
- •6.3 Свойства и методы объекта Application
- •6.4 Коллекция Workbooks и объект Workbook, их свойства и методы
- •6.5 Коллекция Sheets и объект Worksheet , их свойства и методы
- •6.6 Объект Range, его свойства и методы
- •6.7 Коллекция QueryTables и объект QueryTable
- •6.8 Работа со сводными таблицами (объект PivotTable)
- •6.9 Работа с диаграммами: объект Chart
- •6.10 Другие объекты Excel
- •Задание для самостоятельной работы 6.1 Применение Excel для анализа информации из базы данных
- •7. Программирование в Access
- •7.1 Отличительные особенности создания приложений Access
- •7.2 Основные этапы создания приложений Access
- •7.3 Объект Application , его свойства и методы
- •7.4 Макрокоманды и объект DoCmd
- •7.5 Работа с формами Access из vba (объект Form )
- •7.6 Свойства, методы и события форм
- •7.7 Работа с отчетами (объект Report )
- •7.8 Другие объекты Access
- •Задание для самостоятельной работы 7.1 Создание приложения vba в Access
- •8. Программирование в PowerPoint
- •Задание для самостоятельной работы 8.1 Программное добавление элементов в слайды
Задание для самостоятельной работы 7.1 Создание приложения vba в Access
Ситуация:
Приложение, которое было создано для автоматизации формирования договоров в Word (см. задание для самостоятельной работы 10.1) решено было изменить, поскольку в нем обнаружились следующие недостатки:
-
программа не обеспечивала сохранение данных, введенных пользователем через форму, поэтому эти данные нельзя было использовать повторно. Намного удобнее было бы сохранять вводимые данные в базе данных, например, Access;
-
для работы программы необходимы два компонента: программный код (включая форму VBA), который физически находится в файле Normal.dot и шаблон DogovorTemplate.dot, который должен находиться в корневом каталоге диска C:. Такое построение приложения затрудняет его перенос между компьютерами.
Задание:
Измените созданное вами в работе 10.1 приложение, которое обеспечивает автоматическое создание договоров в формате документов Word, таким образом, чтобы это приложение обеспечивало сохранение данных о договорах в базе данных Microsoft Access. Шаблон документа Word, на основе которого должен формироваться договор, должен находиться в той же базе данных Access. Обеспечьте минимальную защиту приложения от ошибочных действий со стороны пользователя: при запуске приложения пользователь не должен видеть никаких других объектов, кроме формы для заполнения данных договора.
Для этого:
Создайте новую базу данных Access, а в ней — необходимые таблицы для хранения данных договоров и шаблонов документов Word;
Создайте в этой базе данных форму, аналогичную представленной на рис. 12.7, для занесения информации договоров в таблицу базы данных и формирования договора в формате документа Word. Создайте для этой формы необходимый программный код;
Рис. 12.7 Форма для занесения данных договоров
Обеспечьте минимальную защиту от неверных действий пользователя: при запуске приложения пользователь должен видеть только созданную вами форму (см. рис. 12.8). Все другие объекты должны быть от него спрятаны.
Рис. 12.8 Окно готового приложения
Решение:
К пункту 1 — создание базы данных и необходимых таблиц:
Запустите Microsoft Access и в меню Файл выберите Создать. В окне Создание файла выберите Новая база данных. Сохраните созданную базу данных. В нашем примере база данных будет находиться в корневом каталоге диска C: и называться Dogovors.mdb.
В открывшемся окне базы данных перейдите на вкладку Таблицы и щелкните два раза мышью по строке Создание таблицы в режиме конструктора.
В созданной таблице определите три столбца (см. рис. 12.9).
Рис. 12.9 Структура таблицы Шаблоны
Сохраните эту таблицу как Шаблоны и закройте окно конструктора.
В окне базы данных на вкладке Таблицы еще раз щелкните по строке Создание таблицы в режиме конструктора. Набор столбцов для новой таблицы должен выглядеть так:
Имя столбца Тип данных Размер
НомерДоговора Текстовый (первичный ключ) 10
Город Текстовый 30
Дата Дата/время 50
Организация Текстовый 50
Представитель Текстовый 50
Должность Текстовый 50
ЮрОснование Текстовый 100
Сохраните эту таблицу с именем Договоры и закройте окно конструктора таблицы.
На вкладке Таблицы окна базы данных щелкните два раза мышью по созданной таблице Шаблоны, чтобы открыть ее в режиме ввода данных. В первую строку этой таблицы в столбец Описание введите "Шаблон договора", а затем выделите ячейку в столбце Шаблон и в меню Вставка выберите Объект. В открывшемся окне переставьте переключатель в положение Создать из файла, затем нажмите на кнопку Обзор и выберите шаблон C:\ DogovorTemplate. dot, который вы создали во время работы 10.1. Затем нажмите на кнопку OK, чтобы поместить шаблон внутрь базы данных.
Щелкните по ячейке для помещенного вами шаблона, чтобы убедиться, что действительно помещен в базу данных. Убедитесь, что в столбце НомерШаблона для первой строки автоматически сгенерировано значение 1, и закройте эту таблицу.
К пункту 2 — создание формы Access и программного кода для формирования файла договора:
В окне базы данных перейдите на вкладку Формы и щелкните два раза мышью по строке Создание формы с помощью мастера. Откроется окно мастера создания форм.
На первом экране мастера в списке Таблицы и Запросы выберите Таблица: Договоры, затем поместите в список Выбранные поля все поля из этой таблицы и нажмите на кнопку Далее.
На следующем экране выберите внешний вид формы в один столбец и нажмите на кнопку Далее.
На следующем экране выберите наиболее вам понравившийся стиль и нажмите на кнопку Далее.
На последнем экране в окне определения имени формы введите имя формы Форма для занесения договоров, переставьте переключатель в положение Изменить макет формы и нажмите на кнопку Готово. Форма будет открыта в режиме конструктора.
Произведите расстановку и дооформление созданных элементов на форме средствами конструктора по вашему вкусу.
Добавьте при помощи Toolbox на свободную часть формы элемент управления Присоединенная рамка объекта. Удалите автоматически сгенерированную вместе с ним надпись, а затем откройте свойства этого объекта. Для свойства Имя настройте значение OLEObject1, а для свойства Вывод на экран установите значение Нет.
Добавьте на форму две кнопки: Отмена и Сформировать договор. Элемент управления для первой кнопки должен называться cmdCancel, а для второй — cmdDog. В открывающемся окне мастера при создании кнопки нажимайте на кнопку Отмена.
Убедитесь, что для элементов управления текстовых полей оставлены имена по умолчанию (НомерДоговора, Город, Дата и т.п.). В итоге форма в окне конструктора должна выглядеть, например, так, как представлено на рис. 12.10
Рис. 12.10 Форма в окне конструктора
Щелкните правой кнопкой мыши по кнопке Отмена и в контекстном меню выберите Обработка событий. В открывшемся окне Построитель выберите Программы и нажмите OK. Введите следующий код для события Click этой кнопки:
Private Sub cmdCancel_Click()
Form.Undo
End Sub
При помощи меню Tools -> Referencesв окне редактора кода добавьте ссылку на объектную библиотеку Microsoft Word 11.0 Object Library.
Так же откройте код для события Click для кнопки Сформировать договор и введите следующий код:
Private Sub cmdDog_Click()
Dim dDate As Date
Dim НомерДоговора, Город, Организация, Представитель, Должность, ЮрОснование As String
'Присваиваем значения переменным при помощи элементов управления формы
If Form.Controls("Дата").Value <> "" Then _
dDate = Form.Controls("Дата").Value
If Form.Controls("НомерДоговора").Value <> "" Then _
НомерДоговора = Form.Controls("НомерДоговора").Value
If Form.Controls("Город").Value <> "" Then _
Город = Form.Controls("Город").Value
If Form.Controls("Организация").Value <> "" Then _
Организация = Form.Controls("Организация").Value
If Form.Controls("Представитель").Value <> "" Then _
Представитель = Form.Controls("Представитель").Value
If Form.Controls("Должность").Value <> "" Then _
Должность = Form.Controls("Должность").Value
If Form.Controls("ЮрОснование").Value <> "" Then _
ЮрОснование = Form . Controls ("ЮрОснование"). Value
'Получаем шаблон — теперь из базы данных
Dim oBOF As BoundObjectFrame
Set oBOF = Form.Controls("OLEObject1")
oBOF = DLookup("[Шаблон]", "Шаблоны", "[НомерШаблона] = 1")
oBOF.Verb = acOLEVerbOpen
oBOF.Action = acOLEActivate
'Получаем ссылки на запущенный нами Word и открытый в нем документ
Dim oWord As Word.Application
Set oWord = GetObject(, "Word.Application")
Dim oDoc As Word.Document
Set oDoc = oWord.ActiveDocument
oWord.Visible = True
oWord.ActiveWindow.WindowState = wdWindowStateMaximize
oDoc . Activate
'Вставляем данные в закладки
oDoc.Bookmarks("bNumber").Range.Text = НомерДоговора
oDoc.Bookmarks("bCity").Range.Text = Город
oDoc.Bookmarks("bDate").Range.Text = dDate
oDoc.Bookmarks("bOrg").Range.Text = Организация
oDoc.Bookmarks("bTitle").Range.Text = Должность
oDoc.Bookmarks("bPerson").Range.Text = Представитель
oDoc.Bookmarks("bLaw").Range.Text = ЮрОснование
End Sub
Запустите созданный вами код на выполнение и убедитесь в его работоспособности.
К пункту 3 — обеспечение минимальной защиты от действий пользователя:
В окне базы данных Access в меню Сервис выберите Параметры запуска.
В открывшемся окне Параметры запуска снимите все флажки, а в списке Вывод формы/страницы выберите Форма для занесения договоров (см. рис. 12.11).
Рис. 12.11 Настройка параметров приложения в окне Параметры запуска
Нажмите на кнопку OK. Затем закройте и вновь откройте созданную вами базу данных. Убедитесь, что все объекты базы данных, кроме формы для занесения договоров, спрятаны от пользователя.
Примечание.
База данных откроется в обычном режиме, если при ее нажатии держать нажатой кнопку < Shift>.