Шрифт:
Вы увидите окно редактора Visual Basic, и в нем – заготовку нашего макроса под названием PasteNormalText. Весь текст собственно макроса будет состоять из одной строки с командой что-то вроде selection.PasteFormat с параметром в скобках. Эту строку надо изменить на следующий текст:
Selection.PasteSpecial DataType:=wdPasteText
Нажмите <Ctrl>+<S>, чтобы сохранить изменения, перейдите в окно Word и проверьте – данные из буфера должны вставляться с сохранением форматирования уже имеющегося текста (картинки и другие объекты, кстати, теперь можно будет вставлять только комбинацией клавиш <Shift>+<Ins>). Если вы забыли назначить горячую клавишу перед началом записи, то ее можно назначить потом – через пункт Настройки, только выбрав из меню не команды, а Макросы.
Перечтите последние абзацы еще раз и, перед тем, как приступать, хорошо подумайте – а оно вам действительно надо? Но если вам такая процедура и покажется слишком сложной для данной функции, по этому же образцу вы можете создавать любые макросы. Даже если вам требуются какие-то нетривиальные действия, которые через обычное меню не осуществляются, удобнее сначала записать приблизительную заготовку макроса, а потом ее редактировать по образцу. Причем некоторые версии Word почему-то игнорируют при автоматической записи макроса кое-какие параметры – например, установки дополнительных условий поиска и замены, которые относятся к параметрам шрифта. И тогда не остается другого выбора, кроме как редактировать макрос вручную.
В простейших случаях для этого даже не придется изучать Visual Basic – к Word прилагается достаточно подробная справка по всем функциям Word Basic, правда, на английском языке. В старых версиях Word, возможно, эту справку придется специально доустановить с установочного диска, а если вы разыщете ее для русской версии Office 97, то она может даже оказаться на русском – сами функции с тех пор почти не изменились.
В Microsoft Word и некоторых других компонентах Office для написания макросов применяется разновидность (подмножество) языка Visual Basic, иногда называемое Word Visual Basic, или, для краткости, просто Word Basic. В этом языке применимы все инструкции, процедуры и функции обычного языка Visual Basic, включая даже прямой вызов системных функций Windows API – чем и пользуются создатели макровирусов, распространяемых уже несколько лет. Для любознательных поясним построение системы Word Basic в самом общем и сильно упрощенном виде – чтобы знать, что искать в справке.
Все, что вы видите в окне, например, Microsoft Word, представляет собой совокупность объектов. Есть объекты Window, Document, Paragraph и т. п. – так, в приведенных примерах вы видели объект под названием Selection, который представляет собой выделенный текст. Каждый из объектов обладает собственным набором свойств и методов. Свойства с их значениями – это то, что описывает наш объект в каждый конкретный момент времени, мы их можем задавать либо непосредственно в программе (макросе), либо через вызов методов – процедур, которые выполняются либо автоматически, либо через диалог с пользователем. Почти каждый из методов обладает, в свою очередь, методом Execute, который запускает процедуру применения метода с заданными заранее значениями свойств.
Существует теоретически неограниченная вложенность этих понятий – так, каждый объект может включать другие объекты, с их свойствами или методами, а те свои, и так до бесконечности. Чтобы не потеряться в этой крайне запутанной иерархии и указать точную принадлежность свойства или метода, их записывают через точку, начиная с самого старшего владельца. В нашем случае, например, объект Selection имеет метод PasteSpeciai (что в переводе и означает «специальная вставка»). Пример более сложной иерархии: Selection включает объект Find («найти»), который включает объект Replacement («замена»), который включает объект Font («шрифт»), который, в свою очередь, имеет свойства Bold, Italic, Name, Size и т. п. Bold или Italic представляют собой переменную булевского типа, т. е. могут принимать одно из двух значений: True («правда») или False («ложь»). Size («размер») – естественно, число (причем оно может быть и дробным), а свойство Name есть обычная строка с названием шрифта. Поэтому, чтобы объявить в программе замещающий текст «полужирным», следует вставить такой оператор: Selection.Find.Replacement.Font.Bold = True. Для сокращения записи при манипуляции свойствами одного и того же владельца можно использовать инструкцию With:
With Selection.Find.Replacement.Font
.Name = "Courier New"
.Bold = True
.Size = 7.5
End With
Отметим, что разные объекты разного уровня могут иметь, естественно, одинаковые свойства и методы – так, наряду со свойством Selection.Find.Replacement.Font (шрифт замещающего текста) может встречаться и свойство просто Selection.Find.Font (т. е. шрифт исходного текста для поиска). Таким образом, чтобы разыскать нужный объект или метод в справке по Word Basic, вы начинаете с главного объекта, который вам подсказывает автоматически созданная заготовка для макроса (например, Selection), а потом ищете в его характеристиках нужные свойства (Properties) или методы (Methods). Не пытайтесь там что-то найти поиском – в справке по Visual Basic он почему-то работает очень плохо.
10.6. К вопросу об автоматических обновлениях
По умолчанию большинство программ установлено на получение автоматических обновлений через Интернет. Не составляет исключения и сама Windows. Приличные программы (в том числе и Windows) лишь сообщают о том, что обновления доступны, и предлагают выбор – устанавливать их или «отложить на потом», но некоторые делают это и без спроса. Никогда не забуду, как я забыл при установке первой версии Firefox отключить автоматическую установку обновлений, в результате чего у меня половина пунктов меню оказалась на русском, половина на английском – изготовители русской версии установочного пакета забыли изменить адрес для получения обновлений, указанный в английской версии.
Мое личное убеждение (которое я, конечно, никому не навязываю) состоит в том, что никаких обновлений быть не должно – не навязывают же вам обновления к оборудованию купленного автомобиля или стиральной машины. Исключение составляют случаи появления принципиально нового оборудования (вроде упомянутых ранее систем HD Audio), с которым нельзя справиться просто установкой новых драйверов. Как показал опыт, все остальные обновления оказываются не слишком нужными и мало на что влияют. Кроме всего прочего, автоматическая установка обновлений – довольно утомительное занятие, которое может в самый неподходящий момент (например, когда ресурсы аккумулятора ноутбука на исходе) надолго приостановить загрузку программы или вообще всей Windows с требованием к тому же ни в коем случае не выключать компьютер.
Крупную подлость также подкинула Microsoft в конце срока эксплуатации Windows XP владельцам нелицензионной версии – вместе с обновлениями стала распространяться программа проверки легальности копии. Владельцы пиратских версий ОС и другого софта вообще никогда не могут быть уверены, что в один прекрасный момент их не застукают подобным образом, поэтому для них автоматическое получение обновлений приходится сразу исключить.
Но мое отрицание установки обновлений не имеет ничего общего с боязнью засветить пиратскую копию – я отключаю получение обновлений и у всех легально купленных программ. Просто мне не нравится, когда на мой компьютер устанавливается неизвестно что в процессе, который я не могу контролировать, – мало ли что там еще придумали разработчики? Если появляется что-то действительно нужное, его легко потом установить отдельно. Покупка ноутбука с предустановленной версией Vista у меня дважды оборачивалась тем, что я несколько первых запусков не мог начать с ним нормально работать, – сначала он долго скачивал обновления, потом еще дольше их устанавливал, затормозив процесс загрузки не меньше чем на полчаса. Лучше уж я обойдусь без обновлений в такой ситуации.
Мой совет заключается в том, чтобы по крайней мере отключить получение обновлений автоматически, без ведома пользователя, а ставить их или нет – это уже ваше личное дело. Как правило, отключить получение обновлений полностью или только лишь через предупреждения можно в настройках программы. Для самой Windows это делается через панель управления: для Windows XP в Центре обеспечения безопасности, для Vista и «семерки» – в Центре обновления Windows. Иногда этого недостаточно, и приходится запрещать данной программе выход в Интернет через сетевой экран (см. разд. 15.2 «Сетевые экраны»).
Некоторые программы бывают в этом отношении весьма назойливы – таковы, например, некоторые программы Adobe, которым напоминать о появлении обновлений не мешает даже запрет на выход в Сеть через сетевой экран. А Windows при отключении обновлений начинает периодически выдавать грозное всплывающее сообщение о том, что «безопасность компьютера под угрозой». Запретить появление всплывающих сообщений в Windows можно через реестр (см. раздел 12.7 «Настройки через реестр»).
Есть только одно обязательное исключение: это антивирусы и сетевые экраны (брандмауэры), о которых пойдет речь в следующей части книги. Без своевременных обновлений они в значительной степени теряют смысл – слишком быстро появляются новые вредоносные программы. Потому у антивирусов и сетевых экранов, наоборот, следует включить регулярное получение обновлений по расписанию, причем лучше даже полностью автоматическое, чтобы не отвлекаться на появление сообщений, требующих реакции пользователя. Именно по этой причине пиратские (незарегистрированные) копии антивирусов и сетевых экранов устанавливать не имеет никакого смысла.