Как создать макросы в Word

Большинство начинающих пользователей, которые только начали изучать информатику вообще и осваивать программу Word в частности, не знают, что такое макрос. Кроме того, макрос считается достаточно сложной и невыполнимой задачей. Но на самом деле макрос — это очень простая и удобная вещь, которую должен уметь использовать любой пользователь.
Что такое макрос и для чего он используется?
Макрос — это инструмент в программе Word, позволяющий запоминать любые определенные задачи и действия, а затем выполнять их автоматически в будущем. Это набор команд, с помощью которых можно автоматизировать выполнение повторяющихся действий. Такой элемент очень важен и нужен, особенно для тех, кто привык экономить время. Макрос в программе Word можно использовать для следующих целей:
- Для ускорения обработки текста. В частности, с помощью этого элемента можно быстро заполнить необходимую область или отформатировать содержимое документа.
- Объединить несколько команд. Конечно, создать табличную форму в Word, а затем заполнить ее содержимым довольно хлопотно. Этот тип инструмента позволит быстро создать нужный параметр, а затем просто вставить его в нужное место.
- Дабы максимально упростить доступ ко всевозможным параметрам, разбросанным по разным диалоговым окнам. Пользователи инструмента Word наверняка знают, как сложно порой найти нужный пункт из-за обилия разнообразных многоуровневых меню. Такой компонент поможет значительно упростить эту задачу.
- Для того, чтобы автоматизировать обработку тех действий, которые очень сложны и рутинны. Макросы в Word могут автоматизировать те параметры, которые, кажется, отнимают много драгоценного времени.
Как создать макрос?
Естественно, чтобы использовать этот инструмент в Word, его нужно сначала создать. Этот процесс не влечет за собой много сложностей, поэтому с ним справится абсолютно любой пользователь.
Первый вариант — создать аналогичный элемент с помощью специального инструмента для создания макроса. Его можно встроить в Word или взять из сторонних источников. Следует отметить, что данный пункт является достаточно небезопасным, так как макросы, скачанные из Интернета, легко могут содержать вирусы, уничтожающие и похищающие важную пользовательскую информацию. Поэтому перед запуском найденного элемента в Ворде необходимо убедиться, что он свободен от разного рода недружественных элементов. Для этого нужно просто просканировать его антивирусом.
Второй вариант — создать этот тип элемента для Word с помощью пользовательского кода, написанного на языке Visual Basic. Для этого необходимо сначала приобрести специальный редактор, который имеет точно такое же название, как код собственного языка программирования. Надо сказать, что эта статья достаточно сложная и вряд ли подойдет обычному пользователю.
Осуществить процесс создания макросов в Word можно комбинируя вышеперечисленные способы. В результате получается стандартный элемент, который затем можно редактировать и дорабатывать с помощью специального кода. Однако вы должны знать, что эта статья, как и предыдущая, подходит только для опытных пользователей. На самом деле для создания такого инструмента потребуются немалые знания в программировании.
Для создания макроса в редакторе MS Office Word выберите фрагмент, для которого будет создан макрос. Затем нужно войти в меню «Вид — Макросы — Запись макроса», выполнить необходимые действия, которые необходимо записать, после чего запись макросов прекращается. Чтобы использовать его, вам нужно выделить фрагмент текста, к которому вы хотите его применить, войти в меню «Вид — Макросы — Макросы — Выполнить» и выбрать имя сохраненного макроса.
Как видите, процесс создания таких элементов не влечет за собой особых сложностей. Самое главное здесь – это грамотный и обдуманный подход к торговле, который значительно повысит шансы на успех. Следует отметить, что макросы могут использовать не только те, кому по роду своей службы необходимо заполнять объемные документы и формы.
В частности, к использованию таких инструментов могут прибегнуть и обычные пользователи, которым необходимо что-то распечатать в Word, например, какой-либо официальный документ. Ведь с помощью такого инструмента можно сэкономить уйму времени и сделать гораздо меньше ошибок, чем при ручном вводе. Ведь, как показывает практика, использование таких элементов сводит на нет возможность ошибиться при заполнении одного и того же шаблона.
Программирование в Word: зачем, почему?

Практически каждый из читателей, наверняка не раз (а кто-то и на постоянной основе), имеет потребность в написании и редактировании документов в среде Word.
Однако если подобная деятельность производится с некоторой периодичностью, пытливый ум сразу начинает думать о способах оптимизации своего труда. Одним из таких способов является программирование в среде Visual Basic for Applications,- среде разработки, которая встроена в известные офисные продукты: Word, Excel, PowerPoint и т.д. Статья больше вводная, для тех, «кто совсем не в теме» :-).
Следует сразу оговориться, что любое программирование требует для изучения достаточных временных ресурсов и, в ряде случаев, подобные трудозатраты могут быть неоправданными.
Поэтому, в этих случаях имеет смысл просто — напросто записать макрос. Которой представляет собой записанную последовательность ваших действий, которая должна быть повторена многократно для некой, часто повторяющейся обработки.
Макрос Тут следует сказать, что по умолчанию, меню для записи макроса скрыто и его необходимо явным образом включить. Для этого нужно пройти по пути: Файл-Параметры

В открывшемся окне перейти в настройку ленты:

Далее, в правом окне, под названием «Основные вкладки», поставить галочку рядом с опцией «разработчик»:

В результате этих действий на ленте сверху у вас появится вкладка «разработчик»:

Войдя в которую, в левой части, вы как раз и сможете найти две интересующие нас опции: «Visual Basic» и «Макросы»:

Соответственно, далее если мы нажимаем на кнопку «Запись макроса», то мы сможем записать нашу последовательность действий:

Созданный макрос можно сохранить либо в конкретном документе, либо сделать его доступным для всех документов (если сохраним его в шаблоне normal.dotm):

После чего, записанный макрос может быть воспроизведён, если мы перейдём, нажав на кнопку «Макросы»:

Для многих достаточно тривиальных задач, этого бывает достаточно. Однако бывают ситуации, когда нам необходимо применить программирование.
- правка кода уже имеющегося макроса
- написание кода с нуля.

Это приведёт к запуску среды разработки, где вы сможете увидеть свой записанный макрос в виде кода. Кстати говоря, это является одним из интересных лайфхаков, когда недостаточное знание программирования на VBA вы подменяете сгенерированным кодом макроса и реверс-инжинирингом, с попыткой вникнуть, «а как оно там внутри устроено?»:

Чуть выше, мы произвели ряд манипуляций, для того чтобы вынести вкладку «разработчик» на ленту. Однако если вы хотите не писать макросы, а писать код сразу, совершенно необязательно добавлять эту вкладку на ленту.
Среду разработки можно вызвать нажатием сочетания клавиш Alt+F11, после чего, написав нужный код, запустить его прямо из среды разработки.
Список готовых макросов можно вызвать нажатием сочетания клавиш ALT+F8.
Visual Basic for Applications(VBA) Как мы уже говорили, разработка кода для приложений Office ведётся с использованием специального кода, который является версией интерпретируемого языка Visual Basic (несколько упрощённой его версией).
Благодаря использованию объектной модели компонентов (COM), могут применяться компоненты, используемые в ряде программ одновременно, для этого используется технология OLE (Object Linking and Embedding), суть которой заключается передаче части работы от одной программы к другой (в рамках среды Windows), и получение обратно результата.
Это означает, что теоретически, вы можете на VBA написать программу, которая будет использовать, например, средства Photoshop или Corel Draw, если конечно они установлены у вас на компьютере (однако, есть подозрение, что для этого потребуется более расширенная версия языка, чем тот, который идёт в комплекте с пакетом Office).
В рамках VBA объекты представлены в виде иерархии: Application/Document/Paragraph и т.д., то есть, как можно видеть в этой строке, каждый предыдущий — содержит последующий.
Получается своего рода «матрёшка», где одно вложено в другое и, если задуматься, это достаточно логично.
Например, главным объектом является Application. Создание этого объекта, другими словами, означает просто запуск Word. Но программа сама по себе никому не интересна, необходимо, чтобы внутри этой программы был создан или открыт некий документ (объект Document). В свою очередь, этот объект содержит целый ряд других элементов иерархии, которые служат для задания его параметров и оформления.
Согласно этому источнику, несмотря на то, что Word содержит множество объектов, по большому счёту, для успешной работы достаточно понимания всего лишь 5 объектов:
- Application
- Document
- Selection
- Range
- Bookmark
- мы запустили Word (Application),
- создали или открыли в нём документ(Document),
- дальнейшие манипуляции в этом документе происходят либо с постановкой курсора в определенное место, либо с выделением определённого места в документе(Range).
Каждый из перечисленных выше объектов, имеет свой набор свойств и методов.
Более подробно о их сути вы можете почитать вот здесь.
В свою очередь, наиболее полный список всех объектов, с их описанием вы можете найти вот здесь.
Вкратце, любая программа на Visual Basic представляет собой сочетание приложения (в нашем случае Word), среды разработки и модулей.
Под модулями понимаются процедуры, которые содержат в себе программный код.
Для создания модуля, всего лишь нужно перейти в соответствующий шаблон (например, если мы создаём модуль, который должен быть доступен для всех документов, мы создаём его в шаблоне Normal). Для этого нажимаем на папке Microsoft Word Objects — правой кнопкой мыши и проходим по пути:

- подпрограммы
- функции (предназначены для вычисления конкретного значения).
Sub имя_подпрограммы ([Параметры]) Тело подпрограммы End Sub
Структура функции выглядит следующим образом:
Sub имя ([Параметры]) Тело функции имя=выражение End Sub
Например, если у нас существует некая функция которая должна возвращать определённое значение, она может выглядеть следующим образом:
Sub TextFinder ([Параметры]) Тело функции TextFinder=Selection.Find.found End Sub
На примере тех же самых макросов, если у нас их более 1, они открываются в среде разработки, разделённые на отдельные подпрограммы, располагаясь друг за другом:

Для более полного ознакомления с языком Visual Basic для приложений, следует обратиться к официальному справочнику по языку.
Visual Basic for Applications является объектно-ориентированном языком программирования и полностью поддерживает постулаты этой концепции.
Типичная команда выглядит как разделённая точками в стиле ООП, где мы спускаемся по иерархии в самый низ, — до конкретного действия:
Например, приведённая выше команда, служит для того, чтобы установить альбомную ориентацию листа.
В редакторе кода присутствует система автодополнения кода: после того как вы ввели первый уровень объектной модели и поставили после него точку, система сама предлагает вам доступные варианты следующего уровня:
Весьма полезной является и справочная система, встроенная в редактор: для получения справки необходимо всего лишь поставить курсор на нужную команду или место кода и нажать F1. Такая оперативность получения справки существенно облегчает самостоятельное изучение программирования в этой среде:

Достаточно интересным является режим отладки программы. Для этого, вам необходимо записать какой-либо макрос, далее, войти в режим его отладки:

В этом режиме вы увидите, что та команда, которая будет выполнена следующей, — окрашена жёлтым цветом. В этом режиме исполнение команд производится построчно, что позволяет отловить ошибку, закравшуюся на каком-либо из этапов.
Для того чтобы исполнить следующую команду, следует каждый раз нажимать на клавишу F8:

Если параллельно с редактором кода вы откроете документ Word, на примере которого вы отрабатываете этот макрос, то вы будете сразу визуально видеть, что делает каждая построчно выполняемая команда (например, если это переход в некую ячейку таблицы и её выделение, — вы будете видеть этот процесс пошагово).
Но тут есть один нюанс: как вы могли видеть выше, программа начинает исполняться с самого начала. Но программа может быть достаточно длинной! Как сделать так, чтобы можно было провести, условно говоря, «юнит-тест» участка программы, который находится не в самом начале?
Для этого нужно всего лишь кликнуть в серую зону слева от программы — и там появится красная метка. Она означает то место, с которого стартует выполнение кода. Теперь, если мы нажмём на F8, — начало исполнения перескочит на эту метку:

Вообще говоря, программирование на VBA может быть достаточно мощной штукой, так как позволяет не только писать некие простые макросы, но даже и создать свой программный продукт, для генерации каких-либо отчётов или форм (и не только). Да, конечно, я сам имею такую слабость, — не желая изучать имеющиеся у продукта инструменты, пытаюсь решить проблему собственными знакомыми костылями (ну, знаю я, например, Java, — значит, буду решать проблему в рамках этого языка, игнорируя встроенные возможности Word). Однако, это не совсем правильный подход, так как «ученье — свет» :-).
Кто к этому так подходит, имеет и неплохие плюшки: совсем недавно на хабре вышла статья "как я с помощью VBA оплатил себе университет", которая наглядно показывает, что программирование на этом языке, в среде Office ещё рано списывать и может быть к этому стоит присмотреться повнимательней.
P.S. Вот мы тут гоняемся за интеллектуальными IDE, модными актуальными языками… А может вот оно, а? 🙂
Будет очень интересно почитать в комментах, если кто то из читателей использовал неким интересным образом программирование под word в VBA и какие результаты это дало!
В двух словах изложу свой опыт: приходилось использовать достаточно продвинутые макросы для написания документации по компьютерному железу. Макросы позволяли «одним кликом» форматировать гигантскую таблицу с параметрами (регистры, поля регистров и их описание и т.д.).
Форматировать хитро: первую строку выделить, первый столбец — искать в каждой строке диапазон битов регистра, вида [12:0], если найдено — применить стиль; такая же сложная логика форматирования по всей таблице (поиск определённых участков и их оформление. Скажем, таблица на 50 строк форматировалась… Секунд 15-20. Вручную — до бесконечности (в зависимости от лени и загруженности работой). Так что, макросы имеют право на жизнь!
- vba
- программирование в word
- Visual Basic for Applications
- ООП
- Программирование
- Читальный зал




