БУМАЖНЫй НОМЕР
![]() |
01.11.2001
Борис Клименко
В
прошлой статье («Легким движением руки…», «ДК» № 10/2001) я обещал, что
на очередном занятии мы уделим основное внимание созданию вспомогательных
средств работы с макросами. Однако дело это хоть и полезное, но довольно
скучное. Поэтому давайте отложим его на потом, а для затравки «изобразим»
несколько простеньких, но, как показывает практика, очень полезных при работе с
текстами макросов.
Кстати, коротко о себе. Когда-то давным-давно, еще в прошлом веке, я по совместительству преподавал основы компьютерной грамотности и даже опубликовал несколько книжек по этой тематике в солидном издательстве «Финансы и статистика». Однако уже много лет я занимаюсь совсем другими делами, требующими интенсивной работы с текстами. Таким образом, все описываемые на наших занятиях макросы и приемы работы - побочный продукт этой деятельности.
О некоторых из этих макросов я уже упоминал мимоходом на прошлом занятии. Настало время представить их более подробно.
Первый из предлагаемых вашему вниманию макросов позволяет мгновенно изменить регистр любой из букв в тексте (из прописной буквы сделать строчную или из строчной прописную). Казалось бы, зачем писать для этого специальный макрос, ведь можно поступить очень просто: щелкнул мышью в нужном месте текста, удалил одну букву, ввел с клавиатуры ее же в нужном регистре - всего-то и дел. Однако тот, кто имеет некоторый опыт работы с компьютером, меня поймет: сокращение количества действий, которые необходимо выполнить при осуществлении тех или иных операций (особенно - тех, которые приходится совершать достаточно часто) - бальзам на рану пользователя. А изменение регистра первой буквы слова при работе с текстами как раз и является такой рутинной, но часто повторяемой операцией.
Однако пора от слов перейти к делу.
Задача 1
Ситуация
Редактируя текст, вы изменили порядок слов в предложении таким образом, что на первую позицию в нем переместилось слово, располагавшееся ранее на одном из последующих мест. К примеру, первоначальный вариант первого предложения данного абзаца мог иметь вид «При редактировании…». Внеся в него правку, я поставил на первую в нем позицию слово «Редактируя».
Словесное описание решения
Вы ставите курсор (будем по привычке продолжать переводить именно так выражение insertion point, канонический майкрософтовский перевод которого звучит как «точка вставки» или «точка ввода») слева от буквы, регистр которой требуется изменить, и нажимаете нужное сочетание горячих клавиш.
Формальное описание решения
Примечание. В этом примере мы приведем полное описание последовательности шагов, выполняемых при записи макроса. В дальнейшем будет приводиться лишь их сокращенная запись. Читатели, желающие ознакомиться с более детальным (с картинками) описанием соответствующих процедур и правил записи макросов, могут обратиться к статье, опубликованной в предыдущем номере «ДК».
Примечание. Созданный нами макрос позволяет изменять регистр буквы в «обе стороны» - получать как из строчной буквы прописную, так и из прописной - строчную.
Что мы имеем в итоге
С помощью только что созданного макроса ChangeCase вы можете мгновенно изменить регистр любой буквы (даже расположенной в середине слова). Для этого нужно поместить курсор слева от нужной буквы и нажать сочетание горячих клавиш Alt+3.
Текст макроса ChangeCase (изменение регистра любой из букв) |
|
Sub ChangeCase() | ‘Заголовок макроса |
‘ ChangeCase Макрос | ‘Выходные данные макроса |
‘ (С) Макрос записан 05.10.2001 Klimenko | ‘Выходные данные макроса |
Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend |
‘Выделение стоящей справа буквы |
Selection.Range.Case = wdToggleCase | ‘Изменение регистра буквы |
Selection.MoveLeft Unit:=wdCharacter, Count:=1 | ‘Снятие выделения нажатием стрелки влево |
End Sub | ‘Конец процедуры создания макроса |
Рассмотрим другую ситуацию. Довольно часто при вводе и редактировании текста допускается ошибка, связанная с перестановкой соседних букв. Например, вместо слова «порядок» вводится «опрядок» и т. п. У меня таким неудобным для ввода сочетанием является «пре» - иногда получаются весьма неблагозвучные выражения.
Предлагаю создать макрос, который позволит мгновенно, без лишних телодвижений, исправить ошибку и поставить буквы в слове в нужном порядке.
Задача 2
Ситуация
Вводя или редактируя текст, вы случайно изменили порядок следования двух стоящих рядом друг с другом букв. Требуется изменить его на правильный.
Словесное описание решения
Вы ставите курсор слева от пары букв, которые требуется поменять местами, и нажимаете нужное сочетание горячих клавиш.
Формальное описание решения
1. Вставьте курсор слева от пары букв, которые требуется поменять местами.
2-9. Шаги полностью совпадают с соответствующими этапами записи предыдущего макроса, поэтому мы их опускаем. Отмечу только, что на шаге 4 при определении имени нового макроса я предлагаю ввести, к примеру, выражение ChangePlace, а на шаге 6 (задание сочетания горячих клавиш) - Alt+4.
10. Скопируйте выделенную букву в буфер обмена, для чего следует нажать стандартное сочетание клавиш Ctrl+C (или Ctrl+Ins - если кто-то предпочитает использовать это сочетание).
11. Нажмите клавишу Del, чтобы удалить выделенную букву.
12. Нажмите клавишу «Стрелка вправо», чтобы переместить курсор на одну букву вправо.
13. Нажмите стандартное сочетание клавиш Ctrl+V (или Shift+Ins), чтобы вставить букву, скопированную на шаге 8 в буфер обмена.
Что мы имеем в итоге
В случае необходимости вы можете теперь мгновенно изменить порядок расположения двух стоящих рядом букв с помощью только что созданного макроса ChangePlace. Для этого нужно поместить курсор слева от соответствующей пары букв и нажать сочетание горячих клавиш Alt+4.
Текст макроса ChangePlace (изменение порядка расположения двух стоящих рядом букв) |
|
Sub ChangePlace() | ‘Заголовок макроса |
‘ ChangePlace Макрос | ‘Выходные данные макроса |
‘ (С) Макрос записан 05.10.2001 Klimenko | ‘Выходные данные макроса |
Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend |
‘Выделение стоящей справа буквы |
Selection.Copy | ‘Копирование выделения в буфер обмена |
Selection.Delete Unit:=wdCharacter, Count:=1 | ‘Удаление выделения |
Selection.MoveRight Unit:=wdCharacter, Count:=1 | ‘Перемещение курсора на один знак вправо |
Selection.Paste | ‘Вставка из буфера обмена |
End Sub | ‘Конец процедуры создания макроса |
Для закрепления навыков, полученных при записи предыдущего макроса, рассмотрим еще одну задачу, решение которой поможет продемонстрировать альтернативный способ запуска макросов - с помощью кнопки на панели инструментов.
Напомню, что до сих пор для запуска того или иного макроса мы использовали соответствующее сочетание горячих клавиш. Этот метод очень удобен в ситуации, когда вы «работаете руками», то есть осуществляете непосредственный ввод с клавиатуры. Кнопки же на панели инструментов нажимаются с помощью мыши.
На мой взгляд, однако, гораздо важнее для определения способа запуска макроса - частота выполнения соответствующих операций. Созданными выше макросами я пользуюсь регулярно - и поэтому присвоил им достаточно удобные сочетания клавиш. Однако некоторые процедуры приходится выполнять лишь периодически, тем не менее, вы бы не отказались от их «автоматизации». В этом случае имеет смысл «посадить» соответствующий макрос на кнопку. Во-первых, не придется запоминать необходимое для запуска макроса сочетание горячих клавиш; во-вторых, вы «сэкономите» удобную комбинацию для других, более актуальных макросов (у меня, например, уже давно ощущается дефицит таких сочетаний).
Итак, приступаем к созданию макроса, запуск которого будет осуществляться с помощью специальной кнопки.
Задача 3
Ситуация
При вводе или редактировании текста вы записали группу из трех слов не в том порядке, который, перечитав затем, посчитаете правильным. Часто в середине таких групп располагаются союзы «и», «или» (например, при вводе предыдущего предложения я сначала написал «При редактировании или вводе…», а потом подумал, что более правильным будет «При вводе или редактировании…»). Требуется изменить порядок указанных слов в трехчленной группе на противоположный (то есть третье слово сделать первым, а первое - третьим).
Словесное описание решения
Вы ставите курсор слева от первого слова и нажимаете соответствующую кнопку на панели инструментов.
Формальное описание решения
1. Поставьте курсор слева от первой буквы первого слова в группе из трех слов, первое и третье из которых требуется поменять местами.
2-4. Шаги полностью совпадают с соответствующими этапами записи предыдущих макросов, поэтому мы их опускаем. Отмечу только, что на шаге 4 при определении имени нового макроса я предлагаю ввести, к примеру, выражение ChangePlace3.
5. Нажмите в диалоговом окне «Запись макроса» кнопку «Панели» в группе
«Назначить макрос» - появится диалоговое окно «Настройка» (рис. 2).
6. Щелкните в окне «Команды» выражение Normal.NewMacros. Change Place3
(это «полное имя» нашего нового макроса ChangePlace3, находящегося
в создаваемом по умолчанию модуле NewMacros, который сохраняется в
общем
шаблоне
Normal).
7. Перетащите мышью это выражение на какую-либо панель MS Word (рис. 3).
Примечание. Перетаскивать макрос можно на любую из панелей, в том числе - на панель, созданную пользователем. Как осуществляется создание новой пользовательской панели, надеюсь, читателям известно.
На этом можно было бы закончить процесс создания кнопки для запуска макроса ChangePlace3, нажав кнопку «Закрыть» в диалоговом окне «Настройка» и приступив непосредственно к записи самого макроса. Однако, как видно на рис. 3, кнопочка у нас получилась, прямо скажем, неказистая: ну очень большая и с малопонятным текстом на ней. Если это вас устраивает (главное, чтобы работала!), можете пропустить следующие несколько абзацев и сразу перейти к шагу 8. Эстетам же предлагаю ознакомиться с имеющимися в MS Word способами оформления кнопок (впрочем, они общие для всех приложений MS Office).
Текст макроса ChangePlace3 (изменение порядка расположения слов в группе из трех слов) |
|
Sub ChangePlace3() | ‘Заголовок макроса |
‘ChangePlace3 Макрос | ‘Выходные данные макроса |
‘ (С) Макрос записан 06.10.2001 Klimenko | ‘Выходные данные макроса |
Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend |
‘Выделение стоящего справа слова |
Selection.Copy | ‘Копирование выделения в буфер обмена |
Selection.Delete Unit:=wdCharacter, Count:=1 | ‘Удаление выделения |
Selection.MoveRight Unit:=wdWord, Count:=1 | ‘Перемещение курсора на одно слово вправо |
Selection.Paste | ‘Вставка из буфера обмена |
Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend |
‘Выделение стоящего справа слова |
Selection.Copy | ‘Копирование выделения в буфер обмена |
Selection.Delete Unit:=wdCharacter, Count:=1 | ‘Удаление выделения |
Selection.MoveLeft Unit:=wdWord, Count:=2 | ‘Перемещение курсора на два слова влево |
Selection.Paste | ‘Вставка из буфера обмена |
End Sub | ‘Конец процедуры создания макроса |
Основных способов три: а) оставить на кнопке только текст (произвольного
содержания); б) отобразить на кнопке рисунок-значок (стандартный или созданный
пользователем); в) совместить приятное с полезным, объединив подходы, указанные
в пунктах а) и б). Каким из этих методов воспользоваться, каждый решает
самостоятельно. Я
же
кратко опишу каждую из названных возможностей.
Итак, мы решили вместо неудобоваримого выражения Normal.NewMacros.ChangePlace3 оставить на кнопке только текст, поясняющий ее назначение. Для этого нужно (не закрывая диалогового окна «Настройка») поместить указатель мыши над только что созданной кнопкой и нажать правую кнопку мыши. Появится контекстное меню, с помощью команд которого будет проводиться модификация кнопки (рис. 4). По умолчанию активной является команда «Только текст (всегда)». Чтобы изменить отображаемой на кнопке текст, следует выбрать поле «Имя» данного меню и внести необходимые коррективы в отображаемый текст. Можно, к примеру, оставить в нем только название макроса или же записать любое другое выражение, в том числе кириллицей (потенциально чревато неприятностями). После завершения ввода нужного текста нужно нажать клавишу Enter.
Следующий из доступных в меню способов оформления кнопки соответствует варианту «текст и значок одновременно». Нужно щелкнуть команду «Выбрать значок для кнопки» и выделить в раскрывшейся коллекции значков наиболее понравившийся или (что правильнее) в какой-то степени отражающий результат применения создаваемого макроса. Последнее особенно важно, если вы выбираете вариант оформления кнопки, при котором на ней будет только значок (без текста). Руководствуясь этими соображениями, я предлагаю выбрать значок, на котором изображена некая фигура, состоящая из трех кружков (она указана на рис. 5 синей стрелкой): в будущем посмотрим на нее и вспомним о наших трех словах).
Внимание! При выборе значка для кнопки следите за тем, чтобы не произошло дублирования уже использованных ранее значков.
Если же вы захотите оставить на кнопке только значок, следует щелкнуть в контекстном меню команду «Основной стиль». После того, как значок выбран, его можно отредактировать. Чтобы перейти в режим изменения значка, необходимо выбрать в контекстном меню команду «Изменить значок на кнопке» - на экране появится диалоговое окно «Редактор кнопок» (рис. 5). Теперь вы можете, например, раскрасить стандартный значок в другие цвета или изменить исходный рисунок. Можно вообще нарисовать свой собственный «фирменный» значок. Попробуйте, поэкспериментируйте - может, сами того не ожидая, вы разбудите дремавшие дотоле способности.
Примечание. Изменить оформление кнопки можно в любой момент. Для этого следует поместить указатель мыши над любой из панелей, нажать правую кнопку мыши и выбрать в раскрывшемся контекстном меню команду «Настройка». После появления одноименного диалогового окна поместите указатель мыши над нужной кнопкой и еще раз нажмите правую кнопку. Появится контекстное меню, работа с которым описывалась выше.
В контекстном меню имеются также другие команды («Копировать значок на кнопке», «Вставить значок для кнопки» и т. п.), назначение которых, видимо, объяснять не требуется. Отмечу только, что для их применения следует предварительно поместить курсор над нужной кнопкой и нажать правую кнопку мыши.
Продолжим описание процедуры создания макроса Change Place3 (еще не забыли?).
8. Нажмите кнопку «Закрыть» диалогового окна «Настройка», чтобы приступить к записи макроса.
9. Нажмите на клавиатуре сочетание клавиш Ctrl+Shift+«Стрелка вправо», чтобы выделить расположенное справа слово.
10. Скопируйте выделенное слово в буфер обмена, нажав стандартное сочетание клавиш Ctrl+C (Ctrl+Ins).
11. Нажмите клавишу Del, чтобы удалить выделенное слово.
12. Нажмите на клавиатуре сочетание клавиш Ctrl+«Стрелка вправо», чтобы переместить курсор к третьему слову в группе.
13. Нажмите стандартное сочетание клавиш Ctrl+V (или Shift+Ins), чтобы вставить первое слово из буфера обмена.
14. Нажмите на клавиатуре сочетание клавиш Ctrl+Shift+«Стрелка вправо», чтобы выделить третье слово группы.
15. Скопируйте выделенное слово в буфер обмена, нажав стандартное сочетание клавиш Ctrl+C (Ctrl+Ins).
16. Нажмите клавишу Del, чтобы удалить выделенное слово.
17. Нажмите два раза на клавиатуре сочетание клавиш Ctrl+«Стрелка влево», чтобы переместить курсор на первую позицию в группе.
18. Нажмите стандартное сочетание клавиш Ctrl+V (или Shift+Ins), чтобы вставить третье слово из буфера обмена на первую позицию в группе.
Что мы имеем в итоге
В случае необходимости вы можете изменить порядок слов в группе из трех слов, сделав третье слово первым, а первое - третьим (то есть из выражения «А или Б» вы получите «Б или А»). Для этого нужно поместить курсор слева от первого слова и нажать соответствующую кнопку на панели инструментов.
В заключение приведу текст созданных макросов с моими пояснениями. Напоминаю, что текст макросов можно просмотреть в редакторе Visual Basic. Как получить к нему доступ, описывалось на прошлом занятии. Однако имеется и более простой способ: нужно просто нажать стандартное сочетание горячих клавиш Alt+F11.