- •Оглавление
- •Предисловие
- •Введение
- •Объектная модель пакета Office
- •Общие сведения о языке VBA
- •Парадигма структурного программирования
- •Организация ввода-вывода в VBA-программах
- •Модули VBA-программы
- •Событийное управление
- •Объектная модель Word
- •Процедура 1
- •Declarations
- •Модуль 1
- •Процедура N
- •Проект 1
- •Приложение
- •Процедура 2
- •Модуль 2
- •Модуль N
- •Проект 2
- •Проект N
- •Range
- •Контрольные вопросы
- •Автоматизация работы при помощи макросов
- •Пример записи макроса
- •Контрольные вопросы
- •Первая программа на VBA
- •Контрольные вопросы
- •Защита от макровирусов VBA-программ
- •Заключение
- •Словарь
- •Библиографический список
- •Электронная справочная система MS Office
- •WWW-ссылки
- •Подписано в печать _____________ Формат 60х84/16. Бумага писчая. Офсетная печать. Усл. п. л. 5. Уч.-изд. л. 3,58. Тираж 100 экз. Заказ №_______
- •680042, г. Хабаровск, ул. Тихоокеанская, 134, ХГАЭП, РИЦ.
32
реакция на какие-либо ошибки или исключительные ситуации, возникающие при выполнении программы.
Приведенных выше операторов VBA достаточно для начального знакомства с VBA, хотя ряд полезных операторов, обработки ошибок в частности, остался вне рассмотрения.
Организация ввода-вывода в VBA-программах
Рассмотрим отдельно организацию ввода–вывода в VBA-программах. Для организации приема информации от пользователя в программу и вывода результатов из программы в VBA имеется несколько возможностей.
Осуществлять ввод-вывод из/в текстовые файлы basic-процедурами
Input, Print и Write.
Визуальный ввод-вывод на экран через стандартные диалоговые окна MsgBox и InputBox, организуя диалог с пользователем.
Разработка своих форм интерфейса пользователя.
Осуществлять ввод-вывод в офисный документ host-приложения, например, накапливая протокол диалога с пользователем в документе Word.
Первый способ, так сказать по старинке, последовательный доступ к текстовому файлу подробно описывать не будем. Разместим на дискете текстовый файл a:\t.txt, в котором содержится строка символов
”abc”.
’
Dim Str1 As String, Str2 As String
’открываем файл на чтение
Open ”a:\t.txt” For Input As #1 Input #1, Str1
Close #1
MsgBox ”считали из файла строку ” & Str1 Str1 = Str1 & ”xyz” ’изменили строку ’открываем файл на запись
Open ”a:\t.txt” For Output As #1 Write #1, Str1
Close #1
MsgBox ”записали в файл строку ” & Str1 ’открываем файл на чтение
Open ”a:\t.txt” For Input As #1
33
Input #1, Str2
MsgBox ”считали из файла строку ” & Str2 Close
’
Для визуального вывода используется стандартное диалоговое окно MsgBox. Это окно содержит следующие элементы (см. рис. 4):
текст сообщения,
заголовок,
пиктограмма,
набор кнопок.
MsgBox выводит на экран окно с сообщением и устанавливает режим ожидания нажатия кнопки пользователем. Окно MsgBox можно выводить процедурой или функцией. Функция MsgBox работает так же, как и процедура, но, кроме вывода на экран диалогового окна, возвращает на свое имя значение типа Integer, указывающее, какую кнопку нажал пользователь.
Синтаксис вызова окна через функцию MsgBox:
имяПеременной = MsgBox(текст[,опция][,заголовок] _ [файлСправки, контекст])
где текст – это строковое выражение, до 1024 символов, отображаемое как сообщение на боксе;
опция – число, которым заказываем количество и тип кнопок, значок пиктограммы и активную кнопку, которая сработает при нажатии на клавишу Enter. Значение по умолчанию – 0. Значение опции определяется по таблице констант MsgBox (см. табл. 4) по формуле
опция = Button + Icon + Default;
заголовок – это строковое выражение, которое увидит пользователь в строке заголовка диалогового окна. Если этот аргумент пропущен, то в строку заголовка помещается имя приложения, например, Microsoft Word;
файлСправки и контекст организуют справку по данному диалоговому окну и являются необязательными параметрами.
Примеры вывода на экран сообщений из программы:
Вывод Message Box процедурой с одним обязательным параметром – собственно сообщением. В заголовке окна по умолчанию отобразится название приложения Microsoft Word.
MsgBox ”Привет1”
|
|
34 |
||
|
|
|
|
Таблица 4 |
Константы MsgBox |
||||
|
|
|
|
|
Константа |
Значе- |
|
|
Описание |
ние |
|
|
||
|
|
|
|
|
Категория Button (Кнопка) |
|
|
|
|
VbOkOnly |
0 |
|
только кнопка Ok |
|
vbOkCancel |
1 |
|
кнопки Ok и Отмена |
|
vbAbortRetryIgnore |
2 |
|
кнопки Стоп, Повторить, Пропустить |
|
vbYesNoCancel |
3 |
|
кнопки Да, Нет, Отмена |
|
VbYesNo |
4 |
|
кнопки Да и Нет |
|
vbRetryCancel |
5 |
|
кнопки Повторить и Отмена |
|
Категория Icon (значок пиктограммы) |
||||
vbCritical |
16 |
|
|
критическое предупреждение |
vbQuestion |
32 |
|
|
вопрос |
vbExclamation |
48 |
|
|
предупреждение |
vbInformation |
64 |
|
|
информация |
|
|
|||
Категория Default (активная кнопка по умолчанию) |
||||
vbDefaultButton1 |
0 |
|
первая |
|
vbDefaultButton2 |
256 |
|
вторая |
|
vbDefaultButton3 |
512 |
|
третья |
|
vbDefaultButton4 |
768 |
|
четвертая |
Заполним заголовок окна названием и версией своей программы. Для этого используем третий параметр, поэтому от второго необязательного останется запятая.
MsgBox ”Привет2”,,”Ver.1.0”
Поместим стандартную картинку в окне:
MsgBox ”Привет3”,vbCritical,”Ver.1.1”
Выведем в окне две кнопки Да и Нет для ответов пользователя на вопрос. Чтобы поймать ответ пользователя, поздоровался он в конце концов или нет, обращаемся к MsgBox как к функции.
Ответ%=MsgBox(”Привет4”,vbQuestion+vbYesNo, _
”Привет Ver.1.2”)
Изображение окна, полученного в последнем примере (см. рис. 4).
Рис. 4. Message Box с двумя кнопками, сообщением, заголовком и иконкой
35
Возвращаемое функцией MsgBox значение позволяет определить, какая кнопка была нажата пользователем (см. табл. 5).
Таблица 5
Значения, возвращаемые функцией MsgBox
Константа |
Значение |
Нажатая кнопка |
vbOk |
1 |
Ok |
vbCancel |
2 |
Отмена |
vbAbort |
3 |
Стоп |
vbRetry |
4 |
Повторить |
vbIgnore |
5 |
Пропустить |
vbYes |
6 |
Да |
vbNo |
7 |
Нет |
Хотя функция Message Box получает информацию в виде значения нажатой кнопки, что можно использовать для создания диалогов вашей программы с пользователем, но окно Message Box все же предназначено для вывода информации. Для ввода в программу информации от пользователя используется окно InputBox.
Окно InputBox состоит из четырех элементов (см. рис. 5):
строка заголовка,
приглашение к вводу,
поле ввода со значением, предлагаемым по умолчанию,
две кнопки – Ok и Cancel.
Функция InputBox выводит на экран диалоговое окно, содержащее сообщение и поле ввода, устанавливает режим ожидания ввода текста пользователем и/или нажатие кнопки, а затем возвращает значение типа String, содержащее текст, введенный пользователем в поле ввода.
Синтаксис обращения к InputBox, как к функции:
InputBox(сообщение[,заголовок] _ [,значениеПоУмолчанию][,позицияХ] _ [,позицияY][,файлСправки,контекст])
где сообщение – строковое выражение, отображаемое как сообщение в диалоговом окне. Должно служить подсказкой пользователю, какую информацию вводить в расположенное ниже в этом окне поле ввода;
заголовок – строковое выражение, отображаемое в заголовке окна. Если параметр опущен, в заголовке пользователь увидит имя приложения, Word, например;