Макрокоманда — это процедура
Макрокоманда — это объединение нескольких команд в одну
персонифицированную команду. Соответствующая ей идентификация (имя,
кнопка, клавиша или аккорд), используется для выполнения содержащейся в
макрокоманде последовательности действий.
Иными словами, макрокоманда — это процедура.
Word предлагает два способа задания макрокоманды:
- в режиме обучения редактора
- в режиме программирования
Механизм обучения подробно излагается в Читальном зале.
Режим обучения
Действия пользователя между началом и концом записи макрокоманды Word
протоколирует на языке Visual Basic и сохраняет в документе или шаблоне
(зависит от настроек) для дальнейшего использования.
При формировании макрокоманды действия и параметры можно выбирать с
помощью мыши, однако, движения мыши не протоколируются. Например, мышь
нельзя использовать для выделения, копирования, вставки и
перетаскивания элементов. Для записи этих действий следует пользоваться
клавиатурой.
В режиме обучения можно строить только линейные процедуры (без циклов и
ветвлений), в то время как главное преимущество макрокоманд проявляется
в их циклическом повторении на больших информационных объемах.
Предлагается следующая методика разрешения этого противоречия. В
макрокоманду оформляются действия, образующие тело будущего цикла, а
сам цикл выполняется вручную, нажатием на клавишу, закрепленную за
макрокомандой. При этом часть типично программистских забот возлагается
на пользователя, как в процессе записи макрокоманды,
так и в процессе ее выполнения.
Точка входа
Макрокоманда создается в расчёте на вполне определённое состояние
редактируемой среды и положение текстового курсора. Макрокоманду должны
завершать действия, восстанавливающие среду и положение курсора для
правильного входа в новый оборот цикла.
Пусть, например, макрокоманда создается для редактирования строки, на
первый символ которой указывает текстовый курсор.
Макрокоманду можно будет использовать в ручном цикле, если
кроме редактирующих действий, она обеспечивает подготовку к новому
обороту цикла — выполняет перемещение курсора в начало
следующей строки и восстанавливает все изменённые режимы в исходное
состояние (например, восстанавливает режим вставки, который в процессе
выполнения действий изменился на режим замены).
Пользователь устанавливает курсор в начало первой строки редактируемой
области и выполняет обороты цикла повторением нажатия клавиши (кнопки),
ассоциированной с макрокомандой без дополнительных корректирующих
действий.
Завершение
Так как тело цикла, заданное в макрокоманде, не содержит проверок на
окончание, то обязанность завершить работу возлагается на человека.
Сначала пользователь выполняет макрокоманду в режиме быстрого
автоповтора (утопив кнопку), затем, при приближении к
границе редактируемой области, отпускает клавишу и начинает нажимать ее
дискретно, контролируя завершение работы.
Алгоритмы
Разработка алгоритмов для макрокоманд началась еще в уроке 4. Явно
об этом сказано в разделе Алгоритмы редактирования и
макрокоманды для учителя. Задания по этой теме присутствовали и в
следующих уроках. Особое внимание обращалось как раз на построение
алгоритмов, способных работать в качестве тела цикла.
Если на предыдущих уроках школьники выполняли рекомендованные
упражнения на составление алгоритмов редактирования, то сегодняшний
урок не должен показаться им слишком сложным.
Для дополнительных объяснений принципов построения макрокоманды можно
использовать следующую схему:
Алгоритм макрокоманды должен учитывать начальное положение курсора,
содержать редактирующие действия и готовить курсор к выполнению
макрокоманды над новым фрагментом текста. Макрокоманде должна быть
поставлена в соответствие клавиша (или аккорд) на клавиатуре.
Редактирующие действия должны быть заданы так, чтобы они могли работать
не только с первым фрагментом, на котором макрокоманда конструируется,
но и со всеми остальными.
Пусть, например, в макрокоманду входит перемещение курсора на конец
строки. Для первой строки, в которой записано слово кот,
это действие можно задать тремя нажатиями на стрелку вправо, но оно не
годится для второй строки, в которой записано слово баран.
Универсальное программирование — клавиша End.
Режим программирования
Используя средства языка Visual Basic можно программировать очень
сложные макрокоманды, содержащие ветвления, циклы, рекурсию.
Можно построить для Word собственный интерфейс, который будет закрывать
его стандартные свойства, и решать конкретную задачу пользователя. При
этом можно не только задавать редактирующие действия, но и создавать
целые интерфейсные панели и окна с управляющими кнопками и полями
ввода.
Более того, все стандартные команды Word существуют в виде объектов,
доступ к свойствам и методам которых можно получить из своей
собственной программы на Visual Basic. А значит, эти команды можно
менять программным путем.
Visual Basic для редактора Word играет примерно ту же роль, что
JavaScript для браузера. Зная объектную модель Word или браузера,
программист может надстраивать над приложением свою собственную
программную оболочку, существенно меняющую поведение и внешний вид
редактора или браузера.
Однако, тема программирования на Visual Basic стоит существенно в
стороне от нашего курса. Я ограничусь только одной иллюстрацией,
которая прольёт свет на обсуждаемую тему, сорвав с нее покровы
таинственности.
Давайте посмотрим, какую процедуру сочинил Word для Васиной
макрокоманды, построенной в Читальном зале.
Выберем в меню Сервис последовательно иерархические пункты
Макрос
Макросы
.
Затем в открывшемся окне нажмем кнопку Изменить:
Запись макрокоманды на языке Visual Basic предстанет перед нами во всей
простоте и прозрачности:
Макровирусы
Макрокоманда — это процедура на языке программирования.
Значит, Word передаёт управление кодам, входящим в её состав. В этом
месте и открывается окно любителям подложить вам неприятности.
Как уже было сказано, Word имеет в своём составе множество встроенных
макрокоманд. Они получают управление при открытии, сохранении, печати
документов, при работе с другими пунктами меню.
Макровирус может переопределять стандартные действия редактора,
закрывая их вовсе или маскируясь под них.
Макрокоманды Word хранит в файлах-шаблонах (расширение dot),
а начиная с версии Word 97, и в самом документе (место хранения
определяется настройками пользователя при создании макрокоманды).
Следовательно, вирус, оформленный в виде макрокоманды, легко
распространяется от пользователя к пользователю при обмене документами.
Широким каналом распространения вирусов является электронная почта.
Особую опасность представляют почтовые клиенты, которые автоматически
открывают doc-файлы, а значит, автоматически
запускают макровирусы.
Как уберечься от заражения?
- Не посылайте электронные письма в формате doc.
- Не принимайте электронные письма в формате doc
(приучите к этому своих корреспондентов).
- Не открывайте незнакомый doc-файл без
предварительной проверки его антивирусной программой.
Практикум
Файлы, необходимые для выполнения заданий практикума находятся по
следующим адресам:
.\write\work\unit14\вопросы.doc
.\write\work\unit14\слова.doc
.\write\work\unit14\слова1.doc
.\write\work\unit14\список.doc
.\write\work\unit14\список1.doc
.\write\work\unit14\шифровка.doc
.\write\work\unit14\pic\1.gif
.\write\work\unit14\pic\2.gif
.\write\work\unit14\pic\3.gif
.\write\work\unit14\pic\4.gif
.\write\work\unit14\pic\5.gif
.\write\work\unit14\pic\6.gif
Перед работой их надо переместить в папку Мои документы.
Ниже приводятся решения последних 6 заданий практикума.
Алгоритм макрокоманды к заданию 3
Пункт алгоритма |
Пункт программы |
Вставить картинку |
Вставка
Рисунок
Из файла
|
Вставить пробел |
ПРОБЕЛ |
На первый символ следующего абзаца |
Ctrl+ВНИЗ |
Алгоритм макрокоманды к заданию 4
Пункт алгоритма |
Пункт программы |
На первый символ следующего абзаца |
Ctrl+ВНИЗ |
Удалить символ конца абзаца |
BS |
Вставить запятую и пробел |
, ПРОБЕЛ |
Алгоритм макрокоманды к заданию 5
Пункт алгоритма |
Пункт программы |
На конец слова |
Ctrl+ВПРАВО |
Удалить запятую и пробел |
Del Del |
Вставить символ конца абзаца |
Enter |
Алгоритм макрокоманды к заданию 6
Пункт алгоритма |
Пункт программы |
На следующую строку |
ВНИЗ |
Выделить слово |
Shift+Ctrl+ВПРАВО |
Вырезать слово в буфер обмена |
Ctrl+X |
Удалить символ конца абзаца |
Del |
На строку вверх |
ВВЕРХ |
На конец текста в строке |
End |
К следующей позиции табуляции |
Tab |
Копировать слово из буфера обмена |
Ctrl+V |
В начало следующей строки |
Home ВНИЗ |
Алгоритм макрокоманды к заданию 7
Пункт алгоритма |
Пункт программы |
Выделить слово |
Shift+Ctrl+ВПРАВО |
Вырезать слово в буфер обмена |
Ctrl+X |
Удалить символ конца абзаца |
Del |
Найти специальное слово |
Ctrl+F <найти далее> <отмена> |
Снять выделение |
ВПРАВО |
Вставить новый абзац |
Enter |
Копировать из буфера обмена |
Ctrl+V |
В начало документа |
Ctrl+Home |
Алгоритм макрокоманды к заданию 8
Пункт алгоритма |
Пункт программы |
Выделить два символа |
Shift+ВПРАВО Shift+ВПРАВО |
Вырезать в буфер обмена |
Ctrl+X |
На конец слова |
Ctrl+ВПРАВО ВЛЕВО |
Копировать из буфера обмена |
Ctrl+V |
На следующее слово |
Ctrl+ВПРАВО |
Ответы на вопросы
-
Что такое макрокоманда?
Ответ.
Макрокоманда — это объединение нескольких команд в одну команду.
-
Почему команду Ко мне! для Фроси можно назвать макрокомандой?
Ответ.
Потому что на самом деле Фрося выполняет три более простых команды:
- Подбежать ко мне.
- Обойти меня справа.
- Сесть у левой ноги.
-
В чём заключается преимущество использования макрокоманд?
Ответ.
Макрокоманда повышает производительность труда: вместо нескольких
операций пользователь выполняет одну. Макрокоманда особенно эффективна
при однотипной обработке больших документов, когда её можно повторять
в цикле.
-
Расскажите алгоритм создания макрокоманды для редактора Word.
Ответ.
- Установить курсор в начальное положение.
- Установить для макрокоманды клавишу и включить запись
(Сервис
Макрос
Начать запись).
- Выполнить редактирующие действия над элементом.
- Выполнить подготовку к работе со следующим элементом.
- Выключить запись (кнопка в окне записи).
-
Какие действия должны завершать макрокоманду, чтобы её можно было
повторять многократно, работая со строками? Со словами абзаца?
Ответ.
Необходимо подготовить курсор для работы со следующим элементом
(установить его в начало следующей строки, следующего слова).
-
Расскажите алгоритм использования готовой макрокоманды.
Ответ.
- Установить курсор в начальное положение для первого элемента.
- Нажимать клавишу, закреплённую за макрокомандой, пока все элементы
не будут обработаны.
-
В конце каждого слова нужно поставить запятую:
Гриша написал такую макрокоманду:
Будет ли она работать?
Ответ.
Только для первых двух строк. Макрокоманда станет универсальной, если
переход на конец строки задать клавишей End.
-
Запишите алгоритм макрокоманды, которая в конце каждого слова вставляет
запятую:
Ответ.
Предполагаем, что в начальный момент курсор расположен перед первым
символом слова.
- На конец слова.
- Вставить запятую.
- На начало следующего слова.
-
Запишите алгоритм макрокоманды, которая преобразует обычную запись
слова в запись с разрядкой:
Ответ.
Предполагаем, что в начальный момент курсор расположен перед первым
символом слова.
- К следующему символу.
- Вставить пробел.
-
Решите обратную задачу: удаление из слова, записанного с разрядкой,
лишних пробелов.
Ответ.
Предполагаем, что в начальный момент курсор расположен перед первым
символом слова.
- К следующему символу.
- Удалить пробел.
Решения зачетного класса
|