№ п/п | Класс объектов | Свойства | Методы | События |
UserForm (форма) | Name (имя) Caption (надпись) Font (Шрифт) Heigt (Высота) Width (Ширина) | Show (показать) Move (переместить) | Load (загрузка) | |
CommandButton (командная кнопка) | Name (имя) Caption (надпись) Font (Шрифт) Heigt (Высота) Width (Ширина) | Move (переместить) | Click (щелчок) | |
TextBox (текстовое поле) | Name (имя) Caption (надпись) Font (Шрифт) Heigt (Высота) Width (Ширина) | Move (переместить) | DbClick (двойной щелчок) | |
Label (надпись) | Name (имя) Caption (надпись) Font (Шрифт) Heigt (Высота) Width (Ширина) |
Каждый объект класса обладает некоторыми свойствами, реагирует на события, к нему можно применять методы.
Значения свойств объектов (Properties) изменяются в окне свойств среды программирования или в программном коде.
Присвоение объекту свойства в программном коде осуществляется по схеме:
Объект.Свойство = ЗначениеСвойства
Объект имеет обычно несколько свойств. С помощью инструкции Wiht … End With можно задать значения сразу нескольких свойств объекта:
With Объект
.Свойство1 = ЗначениеСвойства1
.Свойство2 = ЗначениеСвойства2
…
.Свойство N = ЗначениеСвойства N
End With
Для того чтобы объект выполнил какую-либо операцию, необходимо применить метод, которым он обладает. Многие методы имеют аргументы, которые позволяют задать параметры выполняемых действий. Для присваивания аргументам конкретных значений используется двоеточие и знак равенства, а друг от друга аргументы отделяются запятой:
Объект.Метод Арг1:= значение, Арг2:= значение
Например, операция открытия документа в приложении Ms Word содержит название метода Open, а также указание пути к открываемому файлу: Documents ().Open FileName:=”C:\Мои документы\Проба.docx”
Событие представляет собой действие, распознаваемое объектом. Событие может создаваться пользователем (например, щелчок мышью или нажатие клавиши) или быть результатом воздействия других программных объектов. В качестве реакции на события вызывается определенная процедура, которая может изменять значения свойств объекта, вызывать его методы и т.д.
Для каждого события можно программировать отклик, т.е. реакцию объекта на произошедшее событие. В качестве отклика выполняется некоторая последовательность действий (событийная процедура). Имя процедуры включает в себя имя объекта и имя события:
Объект_Событие ()
В событийной процедуре может участвовать несколько объектов. Например, некоторое событие происходит с первым объектом, в результате чего второй объект изменяет значение одного из своих свойств, а третий – реализует какой-либо метод и т.п.
Каждая процедура представляет собой отдельный программный модуль, который реализует определенный алгоритм. В терминологии процедурного программирования такие процедуры соответствуют подпрограммам, поэтому каждая из событийных процедур описывается с помощью инструкции Sub … End Sub. В программе можно использовать не только процедуры данного программного модуля, но и ссылаться на процедуры других модулей текущего документа, а также других документов.
Различают четыре типа процедур:
1) процедуры общего назначения (стандартные), как правило, не вносят изменений вне себя;
2) командные процедуры расширяют возможности прикладных программ, реализуя новые виды обработки;
3) процедуры обработки событий выполняются при наступлении событий определенного вида (например, открытие или закрытие документа, нажатие кнопки, перемещение объекта и т.п.);
4) функции пользователя, возвращающие результат описанных действий, которые могут быть использованы по аналогии с вызовом встроенных функций VBA.
VBA соблюдает основной синтаксис и правила программирования языков семейства Basic (приложение 1).
Методика программирования с использованием средств VBA сводится к следующему:
- создание объектов управления и контроля (диалоговые окна, пиктограммы, меню);
- разработка процедур, используемых при вызове объектов.
Для организации работы VBA с приложением в References необходимо подключить библиотеку объектов приложения: Microsoft Word Object Library, Microsoft Excel Object Library или др. После этого в Object Browser станут активными объекты приложения, которые будут доступны пользователю в программе.
Любая программа в VBA начинается с создания объекта приложения:
Dim objWord As Word.Application
Set objWord = New Word.Application ‘здесь переменная ‘objWord берет на себя роль приложения Word
или
Dim XL As New Excel.Application ‘здесь переменная XL ‘берет на себя роль приложения Excel
Можно открыть уже имеющийся файл приложения:
XL.Workbooks.Open App.Path & "\MyBook.xls"
Set objDoc = objWord.Documents.Open (App.Path &_ "\HI.doc")
или создать новый документ:
Dim objDoc As Word.Document
Set objDoc = objWord.Documents.Add
Если необходимо чтобы открываемое приложение было видимо пользователю, следует придать свойству Visible объекта значение True; если приложение должно быть невидимым, свойству Visible придаем значение Falshe:
ObjWord.Visible = True
XL.Visible = False
Завершение работы с документом и приложением осуществляется функциями Close и Quit:
ObjDoc.Close False
ObjWord.Quit False ‘Необязательный параметр FALSE ‘сообщает Word, что сохранять изменения в файлах не ‘требуется. Если этот параметр опустить, то Word
‘запросит согласия пользователя (если документ не был ‘сохранен предварительно)
или
XL.ActiveWorkbook.Close ‘Завершение работы с активной ‘книгой
Для сохранения документа используются методы Save, Save as. Метод Save не имеет параметров, т.к. он рассчитан на сохранение документов с известным именем файла:
If objDoc.Saved = False Then objDoc.Save ‘Свойство
‘Saved позволяет проверить, были ли сохранены
‘внесенные изменения.
или
XL.ActiveWorkbook.Save 'сохраняем книгу
XL.ActiveWorkbook.SaveAs "C:\MyNewWorkBook.xls" 'сохраняем книгу под другим именем
Приемы получения статистической информации:
WordApp.ActiveDocument.Characters.Count 'получить
'общее количество символов в активном документе
'(буквы, цифры,пробелы, переход на новую строку и
'т.д)
WordApp.ActiveDocument.Characters(14).Text 'получить
'символ по его индексу
WordApp.ActiveDocument.Characters(14).Text="е" 'изменить символ по его индексу
Для создания графического объекта можно использовать один из двух методов:
1) явным объявлением объектной переменной типа Shape (например, Dim Line1 As Word.Shape), и последующей её инициализацией;
2) неявной инициализацией объекта Shape.
Оба метода имеют свои преимущества и недостатки, например, при втором методе не нужно объявлять объектную переменную для каждого графического примитива, но в дальнейшем сложнее получать доступ к свойствам и методам этого конкретного объекта. Это происходит потому, что к заранее объявленному и впоследствии инициализированному графическому объекту вы обращаетесь напрямую, а при неявной инициализации необходимо знать индекс или имя конкретного графического объекта, что довольно сложно.
Таким образом, проще при создании новых графических примитивов сначала инициализировать заранее объявленный объект, получить и запомнить его имя или ввести уникальное, а затем уничтожить ссылку на этот объект и в дальнейшем использовать для доступа к объекту его уникальное имя. Если вы не собираетесь использовать слишком много графических объектов, то следует просто объявить нужное количество объектных переменных и впоследствии спокойно обращаться к ним.
Следует помнить о том, что новый графический объект создается на текущем листе и принадлежит этому листу, поэтому, сначала следует перейти на нужный вам лист и только потом инициализировать примитив.
Для достижения успеха следует уметь выполнять действия:
Ø запустить редактор Visual Basic
в меню программы на закладке Разработчик в разделе Код выбрать кнопку «Visual Basic»
Разработчик®Код® Visual Basic ®…
Рис. 85. Окно интегрированной среды разработки VBA, открытое из приложения Ms Word.
Ø добавить форму
в меню редактора Visual Basic выбрать закладку Insert; в развернувшемся списке выбрать UserForm
Insert®UserForm®…
Рис. 86. Добавление формы VBA и панель инструментов.
Ø открыть окно «Панель инструментов» в Visual Basic
панель инструментов становится доступной пользователю после добавления формы; окно панели инструментов появляется автоматически в левой части экрана
при уже имеющейся форме: в меню редактора Visual Basic выбрать View; в развернувшемся списке выбрать панель инструментов Tools
View®Tools®…
Ø поместить на форме элемент управления
выбрать на панели инструментов необходимый элемент управления (щелкнуть левой кнопкой мыши по соответствующей кнопке); переместить курсор мыши на поле формы и щелкнуть левой кнопкой мыши по предполагаемому месту расположения элемента управления
Ø изменить размер или положение элемента управления на форме
выделить элемент управления; осуществить изменение размера или положения элемента на форме как с обычным объектом Microsoft Windows
Рис. 87. Форма с расположенными на ней управляющими элементами различного типа с панели инструментов.
Ø задать свойства объекта
в меню Visual Basic выбрать команду «View», в раскрывшемся списке выбрать «Properties Windows», в левом нижнем углу появится окно свойств активной формы
Toolse®Project Properties®…
Рис. 88. Расположение окна свойств объекта.
Ø задать свойства проекта
в меню Visual Basic выбрать команду «Tools», в раскрывшемся списке выбрать «Project Properties», в появившемся окне задать свойства проекта
Toolse®Project Properties®…
Рис. 89. Окно свойств проекта.
Ø ввести и редактировать код формы
открыть двойным щелчком по форме редактор кода и в появившемся окне UserForm (Code) ввести необходимые команды
Рис. 90. Окно редактора кода формы.
Ø ввести и редактировать код элемента управления
открыть двойным щелчком по элементу управления редактор кода и в появившемся окне UserForm (Code) в процедуре, относящейся к выделенному объекту формы ввести необходимые команды
Рис. 91. Окно редактора кода формы с процедурой, реагирующей на нажатие командной кнопки.
Ø ввести и редактировать код программного модуля
в верхнем правом углу окна Visual Basic в окне Project-Project выделить модуль, подвергаемый редактированию и в появившемся окне Module1 (Code) внести код программы или необходимые изменения
Рис. 92. Окно редактора кода модуля программы.
Задание 1. Разработать программу поиска и замены слов в тексте в активном документе, выделяющую цветом замененные слова.
Задание 2. Разработать программу и расположить на листе табличного процессора управляющие элементы, обеспечивающие выполнение действий согласно варианту.
Варианты заданий:
1) очистка выделенных ячеек листа рабочей книги, с автоматическим изменением заливки ячейки на другой цвет;
2) заполнение ячеек случайными числами в заданном пользователем диапазоне;
3) задать авторазмер выделенных столбцов и строк;
4) выбор другого листа книги, копирование и дублирование листа книги;
5) вставка в ячейки данных из другой книги без ее открытия;
6) сортировка данных в алфавитном порядке;
7) вставка на лист выбранного пользователем рисунка;
8) открытие и сохранение книги под другим именем;
9) вызвать предварительный просмотр активной книги;
10) сложить данные двух соседних выделенных столбцов и записать в третий столбец;
11) проверка маски вводимой даты;
12) сортировка данных по возрастанию методом пузырька;
13) определить первую пустую ячейку столбца, и заполнить ее средним значением;
14) конвертировать данные столбца, заданные в рублях, в доллары или евро (по выбору пользователя);
15) поиск и открытие выбранного файла;
16) копирование данных с листа на другие пять листов книги (добавление листов осуществляется автоматически);
17) определить первую пустую ячейку столбца, и заполнить последующие ячейки максимальным, минимальным значениями данных, расположенных выше;
18) защитить лист от изменений после установления пароля, разрешить изменения после снятия пароля;
19) добавить на лист гистограмму, отображающую данные выделенного столбца;
20) наблюдение за скоростью трех случайных процессов в заданный период времени;
21) появление информационного сообщения об имени открываемой книги, количестве и именах листов (обеспечить обновление при переименовании листов);
22) выбрать из списка данные, большие заданного пользователем числа, и разместить на следующем листе, сохранив порядок расположения;
23) вставить на лист данные таблицы документа Word;
24) осуществить поиск заданного числа в закрытой книге, при нахождении числа книгу открыть, при его отсутствии вывести сообщение;
25) визуализировать обратный отсчет заданных в ячейке листа секунд;
26) выбрать из списка данные, входящие в заданный пользователем диапазон и записать их в новый файл;
27) рассчитать сумму выбранных из всего списка данных;
28) копировать с периодичностью 5 секунд данные столбца таблицы в следующие столбцы до тех пор, пока не нажата кнопка «Стоп»;
29) заменить последнюю заполненную строку таблицы на первую;
30) проверка типа данных вводимых в ячейку.