Макрос — это набор определенных действий, команд и/или инструкций, сгруппированных в полную команду, гарантирующую автоматическое выполнение конкретной задачи. Если вы являетесь активным пользователем MS Word, вы также можете автоматизировать часто выполняемые задачи, создав для них соответствующие макросы. Именно о том, как включать макросы в Word, как их создавать и использовать для упрощения, ускорения рабочего процесса и будет рассказано в этой статье. И все же для начала не лишним будет подробнее разобраться, зачем они нужны.
Области использования макросов:
1. Ускорение частых операций. К ним относятся форматирование и редактирование. 2. Объедините несколько команд в целостное действие «туда-сюда». Например, с помощью макроса можно вставить таблицу заданного размера с необходимым количеством строк и столбцов. 3. Упрощение доступа к некоторым параметрам и инструментам, расположенным в различных диалоговых окнах программы.
4. Автоматизация сложных последовательностей действий. Последовательность макросов можно написать или создать с нуля, введя код в редактор Visual Basic на языке программирования Visual Basic.
Включение макросов
По умолчанию макросы доступны не во всех версиях MS Word, точнее они просто не включены. Вы должны включить инструменты разработчика, чтобы включить их. После этого в панели управления программы появится вкладка «Разработчик». Читайте ниже, как это сделать.
Примечание: В версиях программы, в которых изначально доступны макросы (например, Word 2016), инструменты для работы с ними находятся на вкладке «Вид» в группе «Макросы”.
1. Откройте меню «Файл» (кнопка «Microsoft Office» раньше). 2. Выберите «Параметры» (ранее «Параметры Word”). 3. Откройте категорию «Основные» в окне «Параметры» и перейдите в группу «Основные рабочие параметры”. 4. Установите флажок «Показывать вкладку «Разработчик» на ленте”. 5. В панели управления появится вкладка «Разработчик», в которой будет находиться пункт «Макросы”.
Запись макросов
1. На вкладке «Разработчик» или, в зависимости от используемой версии Word, на вкладке «Вид» нажмите кнопку «Макросы» и выберите пункт «Записать макрос”. 2. Укажите имя созданного макроса.
Примечание: Если при создании нового макроса вы дадите ему точно такое же имя, как встроенное в программу, то действия, которые вы записали в новый макрос, будут выполняться вместо стандартных. Чтобы просмотреть макросы, доступные в MS Word по умолчанию, выберите «Команды Word» в меню кнопки «Макросы”.
3. В разделе «Доступно для» выберите, для чего он будет доступен: шаблон или документ, в который его следует сохранить. Совет: Если вы хотите, чтобы созданный вами макрос был доступен во всех документах, с которыми вы будете работать позже, выберите параметр «Обычный.dotm”. 4. В поле Описание введите описание создаваемого макроса. 5. Выполните одно из следующих действий:
- Начать запись: Чтобы начать запись макроса, не привязывая его к кнопке панели управления или сочетанию клавиш, нажмите «ОК”.
- Создать кнопку — чтобы связать созданный макрос с кнопкой, расположенной на панели управления, выполните следующие действия:
- Нажми на кнопку”;
- Выберите документ или документы, в которых вы хотите добавить созданный макрос на панель быстрого доступа (раздел «Настройка панели быстрого доступа”);
- Совет: Чтобы сделать созданный вами макрос доступным для всех документов, выберите параметр «Normal.dotm”.
В окне «Макрос из» (ранее «Выбрать команды из») выберите макрос, который вы хотите записать, нажмите «Добавить”.
- Если вы хотите настроить эту кнопку, нажмите «Изменить”;
- Выберите подходящий символ для создаваемой кнопки в поле «Символ”;
- Введите имя макроса, которое будет отображаться позже в поле «Отображаемое имя”;
- Чтобы начать запись макроса, дважды нажмите кнопку «ОК”.
Выбранный вами персонаж отобразится на панели быстрого доступа. При наведении курсора на этот символ будет отображаться его название.
- Назначить сочетание клавиш — чтобы назначить сочетание клавиш для создаваемого макроса, выполните следующие действия:
- Нажмите кнопку «Клавиши» (ранее «Клавиатура”);
- В разделе «Команды» выберите макрос, который хотите записать;
- В разделе «Новое сочетание клавиш» введите любую удобную для вас комбинацию, затем нажмите кнопку «Назначить”;
- Чтобы начать запись макроса, нажмите «Закрыть”.
6. Выполните все действия, которые необходимо включить в макрос, по одному.
Примечание. Во время записи макроса нельзя использовать мышь для выбора текста, но вы должны использовать мышь для выбора команд и параметров. При необходимости вы можете выделить текст с помощью клавиатуры.
7. Чтобы остановить запись макроса, нажмите «Остановить запись», эта команда находится в меню кнопки «Макросы» в панели управления.
Изменение комбинаций клавиш для макроса
1. Откройте окно «Параметры» (меню «Файл» или кнопка «MS Office”).
2. Выберите «Настройки”.
3. Нажмите кнопку «Настройки», расположенную рядом с полем «Сочетание клавиш”.
4. В разделе «Категории» выберите «Макросы”.
5. В открывшемся списке выберите макрос, который хотите отредактировать.
6. Щелкните в поле «Новая комбинация клавиш» и нажмите клавиши или комбинации клавиш, которые вы хотите назначить определенному макросу.
7. Убедитесь, что назначенное вами сочетание клавиш не используется для выполнения другой задачи (поле «Текущий ярлык”).
8. В разделе «Сохранить изменения» выберите соответствующий вариант (местоположение), чтобы сохранить место, где будет выполняться макрос.
Совет: Если вы хотите, чтобы макрос был доступен для использования во всех документах, выберите параметр «Обычный.точка”.
9. Нажмите «Закрыть”.
Запуск макроса
1. Нажмите кнопку «Макросы» (вкладка «Вид» или «Разработчик», в зависимости от используемой версии программы).
2. Выберите макрос, который хотите запустить (список «Имя макроса”).
3. Нажмите «Выполнить”.
Создание нового макроса
1. Нажмите кнопку «Макросы”.
2. Укажите имя нового макроса в соответствующем поле.
3. В разделе «Макросы для» выберите шаблон или документ, для которого будет сохранен созданный макрос.
Совет: Если вы хотите, чтобы макрос был доступен во всех документах, выберите параметр «Обычный.dotm”.
4. Нажмите «Создать». Откроется редактор Visual Basic, в котором можно создать новый макрос на языке Visual Basic.
Вот и все, теперь вы знаете, что такое макросы в MS 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
- ООП
- Программирование
- Читальный зал




