Основы программирования в Microsoft Word. Работа с макросами
1. Учимся работать в Microsoft Word правильно
2. Учимся работать в Microsoft Word правильно. Работа с рисунками
3. Учимся работать в LibreOffice Writer правильно
В этом уроке мы разберем среду для редактирования макросов, изучим некоторые базовые команды и научимся запускать макросы с помощью горячих клавиш.
Основное меню для работы с макросами расположено в «Вид – Макросы».
Как записывать макрос мы разбирать не будем, потому что это слишком просто и описано уже миллион раз. Вместо этого мы будем учиться писать макросы самостоятельно.
Макросы в MS Word пишутся на упрощенной реализации языка Visual Basic – VBA
или сисярпе. В данном уроке мы написание макросов на сисярпе разбирать не будем – я этого языка попросту не знаю, т. к. не питаю особенно теплых чувств к разработкам Microsoft.
Для данного урока я написал следующие макросы, помогающие исключить из работы всплывающие окна с последующим выбором из списков (что отнимает уйму времени):
1. Для вставки нумерации рисунков и таблиц (бывает полезно, когда приходится оживлять чужой документ, набранный на печатной машинке производства Microsoft);
2. Для вставки подписей к рисункам и таблицам вида «Рисунок 1 – » и «Таблица 1 – »;
3. Для вставки ссылок на нумерацию рисунков и таблиц вида «°Рисунок 1», «°Таблица 1», где перечеркнутый текст имеет тип «hidden», то есть мы автоматизируем то, что делали вручную в статье «Учимся работать в Microsoft Word правильно. Работа с рисунками».
Велик соблазн хранить все макросы в отдельном шаблоне global_macros.dotm, как это описано здесь. Но, как выяснилось, работает это только в MS Office for MAC.
Под Windows, после переноса файла global_macros.dotm в папку STARTUP (C:\Documents and Settings\{{user}}\Application Data\Microsoft\Word\STARTUP),
Настроек, подобных «Личные параметры – Расположения файлов» в Microsoft Word 2013 for Windows я не обнаружил (возможно, это уже реализовано в MS Word 2016 или 365). Поэтому, в качестве более универсального решения, я рекомендую добавлять макросы в базовый шаблон Normal.dotm с помощью редактора Microsoft Visual Basic for Applications, который открывается из MS Word с помощью комбинации клавиш «Alt + F11».
Из-за проблем с кодировкой копировать код с русскими буквами нужно только при включенной русской раскладке.
Более хирургические варианты решения этой проблемы описаны тут.
Итак, с помощью контекстного меню «Insert – Module» к шаблону «Normal» добавляем новый модуль, в который мы будем копировать скрипт.
Этот эффект лично у меня проявился не сразу (через несколько дней после начала работы с макросами, изначально все назначенные горячие клавиши работали как надо), но он исчез сразу после того, как я переименовал все процедуры.
Теперь настроим горячие клавиши для запуска макросов.
Для этого переходим в «Файл – Параметры – Настроить ленту – Сочетания клавиш: Настройка...»
В данном примере мы теперь можем добавить подпись к таблице комбинацией клавиш «Ctrl + Shift +ю».
Теперь разберем три из шести написанных макросов для рисунков (макросы для таблиц абсолютно аналогичны).
В принципе, программирование на бейсике особо ничем не отличается от программирования на остальных языках. Современный бейсик похож на Python и Ruby тем, что в нем используются отступы. Комментарии (неисполняемые строки) начинаются с одинарной кавычки.
Как я уже упоминал, процедура в VBA начинается со слова Sub, и заканчивается End Sub.
Переменная объявляется с помощью команды Dim, значение переменной устанавливается с помощью команды Set.
Пожалуй, это все, что нам необходимо знать для того, чтобы начать писать простейшие скрипты.
Писать скрипты можно непосредственно в редакторе Microsoft Visual Basic for Applications (он «на лету» исполняет скрипт и показывает ошибки), но мне для демонстрации проще делать это в текстовом редакторе Notepad++.
Опишем скрипт InsertImageSequence.bas (вставить номер рисунка).
В целом для написания собственных скриптов вам понадобится научиться работать с полями и текстом.
Логика написания скрипта такая:
1. Нам нужно добавить поле, которое выводит номер последовательности. Посмотреть вид этого поля можно в контекстном меню «Коды / значения полей», кликнув по полю, полученному традиционным способом, правой кнопкой мыши;
2. Далее необходимо указать место, в которое мы хотим вставить текст / поле. В данном случае это текущее местонахождение выделения / курсора. Все основные операции с текстом в VBA замечательно описал Биллиг Владимир Арнольдович, и для понимания работы с объектами Range и Selection, которые мы будем использовать, я рекомендую прочитать его статью;
3. Необходимо в выделение добавить поле с присвоенным ему типом (в данном случае SEQ). Для этого мы будем использовать метод Add, описанный в документации Microsoft. Как обозначаются типы полей в скриптах описано здесь. В данном случае нам необходимо узнать, как обозначается в скрипте тип поля SEQ (wdFieldSequence), чтобы указать его в качестве параметра Type метода Add. Также необходимо указать параметры, которые мы посмотрели в пункте 1.
В итоге у нас получается что-то типа этого
Элементарно. Здесь просто добавились некоторые методы из статьи Биллига для добавления текста до и после поля.
Наконец, рассмотрим скрипт InsertRefToImage.bas (добавить ссылку на изображение).
Что использовалось для написания последнего скрипта:
1. Неразрывный пробел средствами VBA
2. Getting User Input in a Dialog Box
3. Word Macro for Insert Cross-Reference
4. How to: Programmatically Hide Text in Documents
Все эти замечательные рецепты ищутся в обыкновенном google по запросу, начинающемуся на «word macro» или «word vba».
В следующей статье мы рассмотрим основные правила типографики и работу со списком литературы в MS Word.