- •Учреждение образования "Гродненский государственный профессионально-технический колледж приборостроения"
- •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 Программное добавление элементов в слайды
5.6.10 Коллекция Tasks и объект Task
Объект Word.Task, программный запуск приложений из Word средствами VBA, передача сообщений из Word внешним приложениям
Чаще всего Word запускается из Excel, Access или другого приложения, но иногда встречается и обратная необходимость — нужно открыть из Word другое приложение и переключиться в него. Самый простой способ запустить другое приложение из Word — воспользоваться стандартным объектом VBA Shell. Например, чтобы запустить блокнот, можно воспользоваться командой
Shell ("notepad.exe")
Есть и множество других возможностей, например, воспользоваться объектом Application для других приложений Word, или средствами WSH (особенно для консольных приложений), или — если приложение нужно запустить на другом компьютере — средствами WMI.
После того, как приложение запущено, весь набор работающих приложений представляется в Word коллекцией Tasks, а каждое отдельное приложение — соответственно, объектом Task. У коллекции Tasks есть два интересных метода:
Exists() — проверить, запущено ли нужное нам приложение. Например, запуск нашего блокнота с проверкой может выглядеть так:
If Tasks.Exists("Notepad") = False Then
Shell "notepad.exe"
Else
Tasks("Notepad").Activate
End If
Tasks("Notepad").WindowState = wdWindowStateMaximize
ExitWindows() — произвести операцию Log Off, то есть завершить сеанс работы в Windows. Несохраненные документы Word при этом закроются без сохранения (и без вопросов к пользователю), а документы остальных приложений пользователю будет предложено сохранить.
У объекта Task интересных свойств и методов больше:
-
Height, Width, Top, Left — эти свойства позволяют точно настроить размер окна выбранного вами приложения.
-
Visible — возможность спрятать приложение.
-
WindowState — возможность развернуть, свернуть или восстановить окно.
-
назначение методов Activate(), Close(), Move(), Resize() очевидно.
-
самый интересный метод — это метод SendWindowMessage(). Он позволяет передавать окну приложения сообщения Windows (щелчки мышью, нажатия клавиш и т.п.). Разобраться в том, какие приложения можно посылать окнам приложений и что они значат, можно при помощи Microsoft Platform Software Development Kit. Например, чтобы в нашем блокноте отобразить окно "О программе", можно воспользоваться командой
Tasks("Notepad").SendWindowMessage &H111, 11, 0
5.6.11 Коллекция Windows и объект Window
Объект Word.Window, программная работа с окнами документов в Word средствами VBA
Коллекция Windows и объект Window представляют окна открытых документов Word и используются в основном для настройки внешнего вида этих окон и навигации по ним. Получить доступ к окну нужного нам документа можно так:
Dim Window 1 As Window
Set Window1 = Windows("doc2.doc")
или так :
Set Window1 = ThisDocument.ActiveWindow
После этого можно использовать свойства и методы объекта Window. Все они очень просты. Например, чтобы поменять заголовок окна, можно использовать такой код:
Window1.Caption = "Мое приложение"
Задание для самостоятельной работы 5.1 Программное формирование документа в Word
Ситуация:
Вам необходимо автоматизировать формирование договоров в виде документов Word. Типичный договор выглядит так, как представлено на рис. 10.2 (для простоты в этом задании вам нужно формировать только его начало). Изменяемые данные, которые должны подставляться программно, выделены зеленым цветом.
Рис. 10.2 Так должен выглядеть созданный программно договор
Задание:
Создайте в шаблоне normal.dot пользовательскую форму с именем Dogovor, аналогичную представленной на рис. 10.3.
Рис. 10.3 Форма для занесения данных договора
Создайте макрос, который по которому эта форма должна открываться, и назначьте этому макросу кнопку на панели инструментов Word.
Создайте и сохраните на диске с именем C:\dogovortemplate.dot шаблон Word, в который будут подставляться необходимые данные, и добавьте в нужные места закладки.
Создайте для кнопки Сформировать договор на форме программный код, при помощи которого на основе шаблона и подставляемых данных из формы формировался бы новый документ с текстом договора.
Примечание:
В реальном приложении данные из формы должны были бы сохраняться в базе данных и использоваться потом многократно (например, для формирования других документов). В этом примере для простоты данные для создаваемого документа берутся напрямую из формы. Работа с базой данных в похожей ситуации будет рассмотрена в задании к главе, посвященной Access.
По этой же причине все данные в этом примере (включая дату и номер договора) текстовые.
Решение:
К пункту 1 — создание пользовательской формы:
Откройте окно редактора Visual Basic для Word и щелкните правой кнопкой мыши по проекту Normal в Project Explorer, а затем выберите в контекстном меню Insert -> UserForm.
В дизайнере форм сконструируйте форму, аналогичную представленной на рис. 10.1-2 (про работу с дизайнером форм рассказывалось в разделе 5). В нашем примере элементы управления на форме будут называться так:
текстовое поле для ввода города: txtCity;
текстовое поле для ввода номера договора: txtNumber;
текстовое поле для ввода даты: txtDate;
текстовое поле для ввода наименования организации: txtOrg;
текстовое поле для ввода представителя организации: txtPerson;
текстовое поле для ввода его должности: txtTitle;
текстовое поле для ввода юридического основания: txtLaw;
кнопка для формирования договора: cmdDog;
кнопка Отмена: cmdСancel.
Настройте оформление для элементов управления по вашему вкусу. Установите значение для свойства Caption для формы как "Данные договора". Для кнопки cmdDog установите True для значения свойства Default, а для кнопки cmdCancel установите True для значения свойства Cancel. Для свойства (Name) самой формы введите значение FormDog.
К пункту 2 — создание макроса и кнопки для показа формы:
В стандартном модуле NewMacros проекта Normal создайте новую процедуру с именем FormDog(). Код ее может быть таким:
Public Sub FormDogShow ()
FormDog.Show
End Sub
Убедитесь, что при его запуске открывается созданная вами форма.
В Word в меню Сервис выберите Настройка, а затем перейдите на вкладку Команды. В списке Категории выберите Макросы, а затем перетащите на любую панель инструментов макрос Normal. NewMacros. FormDogShow. Настройте для созданной кнопки подходящий формат отображения (см. главу 1 этой книги). После этого закройте окно Настройка и убедитесь, что при нажатии на эту кнопку открывается форма.
К пункту 3 — создание шаблона документа Word:
Создайте новый документ Word, аналогичный представленному на рис. 10.4.
Рис. 10.4 Шаблон договора
Поместите в нужные места этого документа закладки. Места вставки закладок можно посмотреть на рис. 10.2 (текст, выделенный зеленым). В нашем примере закладки будут называться так:
-
закладка для ввода номера договора: bNumber;
-
закладка для ввода города: bCity;
-
закладка для ввода даты: bDate;
-
закладка для ввода наименования организации: bOrg;
-
закладка для ввода представителя организации: bPerson;
-
закладка для ввода его должности: bTitle;
-
закладка для ввода юридического основания: bLaw.
Сохраните этот файл как шаблон Microsoft Word с именем C:\DogovorTemplate.dot.
К пункту 4 — создание программного кода для кнопок на форме:
Для события Click кнопки cmdCancel введите следующий программный код:
Private Sub cmdCancel_Click()
FormDog.Hide
End Sub
Для события Click кнопки cmdDog можно использовать следующий программный код:
Private Sub cmdDog_Click()
Dim oDoc As Document
Set oDoc = Application.Documents.Add("C:\DogovorTemplate.dot")
oDoc.Bookmarks("bNumber").Range.Text = txtNumber.Value
oDoc.Bookmarks("bCity").Range.Text = txtCity.Value
oDoc.Bookmarks("bDate").Range.Text = txtDate.Value
oDoc.Bookmarks("bOrg").Range.Text = txtOrg.Value
oDoc.Bookmarks("bTitle").Range.Text = txtTitle.Value
oDoc.Bookmarks("bPerson").Range.Text = txtPerson.Value
oDoc.Bookmarks("bLaw").Range.Text = txtLaw.Value
FormDog.Hide
oDoc.Activate
End Sub