Языка программирования Visual Basic for Application
№ п/п | Класс объектов | Свойства | Методы | События |
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 AsWord.Application
Set objWord = NewWord.Application ‘здесь переменная ‘objWord берет на себя роль приложения Word
или
DimXLAs NewExcel.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) проверка типа данных вводимых в ячейку.