Лекция 3: 2 Для создания возможности использования объектов файловой системы нужно подключить библиотеку DLL, содержащую эти объекты: меню Разработать > Ccылки > Microsoft Scriptlet Component (сделать щелчок на соответствующем элементе управления CheckBox). Не могу найти меню Разработать (Develop)>Links и т.д. |
Макросы. Дальнейшая информация об объектах
Макросы (макрокоманды) - это программы, позволяющие автоматизировать решение часто встречающихся задач.
Создание макросов
VBA (Visual Basic for Application) - Visual Basic для приложений встроен в приложения Microsoft Office; программист имеет возможность работать как с объектами текущего, так и с объектами других приложений. Приложение предоставляет свои функции в виде объектов, работа с которыми обеспечивается средствами VBA. Здесь рассматриваются элементы работы с макросами.
Рассматриваются следующие этапы создания макроса:
- проектирование (определение последовательности действий), задание имени макрокоманды,
- запись макрокоманды. Макрос может быть создан путeм: протоколирования действий пользователя в режиме записи макроса (запись) или программирования,
- тестирование,
- задание сочетания клавиш для вызова макрокоманды,
- макрокоманде можно поставить в соответствие кнопку панели инструментов или команду меню.
Протоколирование последовательности действий пользователя в режиме записи макроса (запись)
Процесс записи макрокоманды рассматривается на примере создания макроса, подчеркивающего в тексте слова из латинских букв.
Практическая работа 32
32a. Протоколирование действий пользователя в режиме записи макроса
- Ввести текст в приложении Word, содержащий русские слова и слова, написанные латинскими буквами, затем выполнить команду: меню Сервис Макрос Начать запись,
- в выведенном диалоговом окне Запись макроса ввести имя макрокоманды (здесь макрос34), в поле Описание можно ввести краткое описание макрокоманды (Подчеркнуть слова из латинских букв), в поле Макрос доступен для: ввести - Всех документов (Обычный doc),
- далее сделать щелчок на кнопке ОК. Выводится следующее диалоговое окно, где можно определить вид старта макрокоманды:
- щелчком на соответствующей кнопке панели инструментов,
- выбором команды из меню,
- использованием комбинации клавиш.
- c использованием клавиатуры подвести курсор к слову введeнного текста, написанному латинскими буквами. С использованием клавиш Shift + a маркировать слово и с использованием соответствующей кнопки панели инструментов подчeркнуть слова,
- использовать автоматически выведенную кнопку (вверху слева на экране): Остановить запись,
- сохранить макрос: файл сохранить как Шаблон документа,
- открыть файл, содержащий слова, написанные латинским шрифтом, поставить курсор перед словом из латинских букв. Далее нужно применить макрос: меню Сервис Макрос Макросы : Выбрать макрос 34 a щелчок на кнопке Выполнить; слово текста подчeркивается.
Макрокоманда обрабатывает текст, находящийся между курсором и концом документа. Ниже приведeн текст созданного протоколированием макроса. Он создан (здесь) копированием сгенерированного в результате процедуры протоколирования макроса:
Sub Макрос34 () ' Подчеркнуть слова из латинских букв Selection.MoveRight Unit:=wdCharacter, Count:=5, Extend:=wdExtend If Selection.Font.Underline = wdUnderlineNone Then Selection.Font.Underline = wdUnderlineSingle Else Selection.Font.Underline = wdUnderlineNone End If End Sub
Программирование макроса
Рассматривается пример создания макрокоманды, обеспечивающей подчеркивание слов из латинских букв. Последовательность действий: меню Сервис Макрос ввести имя Макроса ввести тип шаблона в поле Описания ввести комментарий назначение макроса сделать щелчок на кнопке Создать ввести текст макроса сохранить.
32в. Программирование макроса
- Ввести код, данный ниже (пояснения даны под комментариями),
- подвести курсор к слову текста в приложении Word, написанному латинскими буквами,
- использовать команду меню Сервис Макрос Макросы маркировать в cписке требуемый макрос Выполнить.
Описание некоторых используемых функций дано после кода макроса.
Sub macrosm() ' программирование макроса Dim sw$ ' описание проверяемого слова текста Dim fc$ ' описание первой буквы проверяемого слова ' текст: подчеркнуть слова из латинских букв" r = MsgBox("lateinische Woerter" + Chr$(13) + "unterstreichen", 1) If r Then ' сравнение закладок While WordBasic.CmpBookmarks("\StartOfSel", "\EndOfDoc") <> 0 WordBasic.SelectCurWord ' выделить текущее слово ' возвратить строку - выделенный фрагмент текста sw$ = WordBasic.Selection$() fc$ = WordBasic.Mid$(sw$, 2, 1) ' возвратить символ If fc$ >= "A" And fc$ <= "z" Then ' подчеркнуть, если буквы лежат в заданном диапазоне WordBasic.Underline (-1) WordBasic.WordRight ' продвинуться дальше End If Wend End If End Sub
Ниже приведeн список некоторых функций.
- CmpBookmarks(Закладка1$, Закладка2$) сравнивает положение двух закладок в документе. Возвращает значение, определяющее взаимное расположение сравниваемых закладок (табл. 5.1).
Таблица 5.1. Значения, определяющие взаимное расположение закладок Значение Положение закладок 0 Положения совпадают 1 Закладка 1 ниже закладки 2 2 Закладка 1 выше закладки 2 3 Закладка 1 ниже и пересекается с закладкой 2 4 Закладка 1 выше и пересекается с закладкой 2 5 Закладка 1 включает закладку 2 6 Закладка 2 включает закладку 1 7 Закладки начинаются в одном месте, но закладка 1 длиннее закладки 2 8 Закладки начинаются в одном месте, но закладка 2 длиннее закладки 1 9 Закладки заканчиваются в одном месте, но закладка 1 длиннее закладки 2 10 Закладки заканчиваются в одном месте, но закладка 2 длиннее закладки 1 11 Закладка 1 ниже и смежная с закладкой 2 12 Закладка 1 выше и смежная с закладкой 2 13 Закладки не существуют
Имена некоторых закладок - параметры функции CmpBookmarks приведены ниже:
\sel - текущее выделение или точка вставки,
\EndOfDoc - конец документа,
\Doc - целый документ, кроме символа конца документа.
- Mid$(Строка$,Начало[, Количество]) возвращает подстроку (часть строки) строки-аргумента,
- SelectCurWord выделяет текущее слово,
- Selection$() возвращает строку - выделенный фрагмент текста. Если фрагмент не выделен, то возвращает символ, следующий за курсором,
- UnderLine, Underline() для выделенного фрагмента устанавливает или отменяет оформление подчeркиванием:
- 0 - ни один из символов не оформлен подчeркиванием,
- 1 - все символы фрагмента оформлены подчeркиванием,
- -1 - часть символов оформлена подчeркиванием,
- WordLeft [НаСколько], WordLeft(НаСколько) перемещает курсор влево на указанное количество слов. Если параметр "НаСколько" не задан, то выполняется перемещение на одно слово. WordLeft() возвращает 0, если курсор не может быть перемещeн и -1, если действие не может быть выполнено,
- WordRight(НаСколько), WordRight[НаСколько] перемещает курсор вправо на указанное количество слов. Если параметр "НаСколько" не задан, то выполняется перемещение на одно слово. WordRight(), возвращает 0, если курсор не может быть перемещeн и -1, если действие не может быть выполнено.