Опубликован: 04.07.2006 | Уровень: для всех | Доступ: платный
Лекция 5:

Макросы. Дальнейшая информация об объектах

Аннотация: В этих версиях Visual Basic отсутствует возможность работы с макросами, в данном учебном пособии с этой целью используется VBA. Во второй части лекции даётся дальнейшая информация об объектах Visual Basic, их свойствах, событиях, методах.

Макросы (макрокоманды) - это программы, позволяющие автоматизировать решение часто встречающихся задач.

Создание макросов

VBA (Visual Basic for Application) - Visual Basic для приложений встроен в приложения Microsoft Office; программист имеет возможность работать как с объектами текущего, так и с объектами других приложений. Приложение предоставляет свои функции в виде объектов, работа с которыми обеспечивается средствами VBA. Здесь рассматриваются элементы работы с макросами.

Рассматриваются следующие этапы создания макроса:

  • проектирование (определение последовательности действий), задание имени макрокоманды,
  • запись макрокоманды. Макрос может быть создан путeм: протоколирования действий пользователя в режиме записи макроса (запись) или программирования,
  • тестирование,
  • задание сочетания клавиш для вызова макрокоманды,
  • макрокоманде можно поставить в соответствие кнопку панели инструментов или команду меню.

Протоколирование последовательности действий пользователя в режиме записи макроса (запись)

Процесс записи макрокоманды рассматривается на примере создания макроса, подчеркивающего в тексте слова из латинских букв.

Практическая работа 32
32a. Протоколирование действий пользователя в режиме записи макроса
  • Ввести текст в приложении Word, содержащий русские слова и слова, написанные латинскими буквами, затем выполнить команду: меню Сервис \to Макрос \to Начать запись,
  • в выведенном диалоговом окне Запись макроса ввести имя макрокоманды (здесь макрос34), в поле Описание можно ввести краткое описание макрокоманды (Подчеркнуть слова из латинских букв), в поле Макрос доступен для: ввести - Всех документов (Обычный doc),
  • далее сделать щелчок на кнопке ОК. Выводится следующее диалоговое окно, где можно определить вид старта макрокоманды:
    • щелчком на соответствующей кнопке панели инструментов,
    • выбором команды из меню,
    • использованием комбинации клавиш.
  • c использованием клавиатуры подвести курсор к слову введeнного текста, написанному латинскими буквами. С использованием клавиш Shift + a маркировать слово и с использованием соответствующей кнопки панели инструментов подчeркнуть слова,
  • использовать автоматически выведенную кнопку (вверху слева на экране): Остановить запись,
  • сохранить макрос: файл \to сохранить как \to Шаблон документа,
  • открыть файл, содержащий слова, написанные латинским шрифтом, поставить курсор перед словом из латинских букв. Далее нужно применить макрос: меню Сервис \to Макрос \to Макросы : \to Выбрать макрос 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
Программирование макроса

Рассматривается пример создания макрокоманды, обеспечивающей подчеркивание слов из латинских букв. Последовательность действий: меню Сервис \to Макрос \to ввести имя Макроса \to ввести тип шаблона \to в поле Описания ввести комментарий \to назначение макроса \to сделать щелчок на кнопке Создать \to ввести текст макроса \to сохранить.

32в. Программирование макроса
  • Ввести код, данный ниже (пояснения даны под комментариями),
  • подвести курсор к слову текста в приложении Word, написанному латинскими буквами,
  • использовать команду меню Сервис \to Макрос \to Макросы \to маркировать в cписке требуемый макрос \to Выполнить.

Описание некоторых используемых функций дано после кода макроса.

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, если действие не может быть выполнено.
Константин Новков
Константин Новков

Лекция 3: 2

Для создания возможности использования объектов файловой системы нужно подключить библиотеку DLL, содержащую эти объекты: меню Разработать > Ccылки > Microsoft Scriptlet Component (сделать щелчок на соответствующем элементе управления CheckBox).

Не могу найти меню Разработать (Develop)>Links и т.д.

антонина квасова
антонина квасова
Ольга Павлова
Ольга Павлова
Россия, Череповец, ЧГУ, 1997
Кира Плосконосова
Кира Плосконосова
Россия, Москва