Мы в МойОфис любим Lua. И сами активно его используем: в наших редакторах с помощью Lua работают макросы и надстройки. И помогаем разработчикам лучше узнать этот язык — при нашей поддержке вышли уже два издания классного учебника по Lua от Роберту Иерузалимски (кстати, сам автор считает, что этот язык в части задач даже более хорош, чем Си!)
А летом 2025 года мы выпустили целый трёхтомник по Lua. Первый том — новое издание книги Роберту. Второй и третий — вышедшие впервые учебники от Дмитрия Шульгина, старшего тренера по продуктам Учебного центра МойОфис.
В этой статье поделимся выдержкой из первого тома, введением в основы языка. А самых искушенных читателей в конце материала ждет «особое приглашение».

«Lua изначально создавался для решения реальных задач взаимодействия с хост-программами, такими как МойОфис. Его архитектура предоставляет разработчикам мощные инструменты для творческой реализации своих идей», — Роберту Иерузалимски, один из создателей языка Lua.
«Русскоязычных пособий по Lua катастрофически не хватает, хотя спрос на них высок. Наш трехтомник решает эту проблему», — Дмитрий Шульгин, старший тренер по продуктам Учебного центра МойОфис.
Чтобы начать выполнять задания из трёхтомника и создавать макрокоманды в редакторах МойОфис, можно установить бесплатную версию «МойОфис Стандартный. Домашняя версия».
Занятие 1. Введение в разработку макрокоманд.
В ходе занятия вы:
Узнаете зачем нужны макрокоманды и особенности их использования в редакторах МойОфис.
Познакомитесь с возможностями встроенного редактора макрокоманд: создавать, удалять и переименовывать макрокоманды.
Запустите первую макрокоманду на Lua в приложении МойОфис.
Содержание занятия:
1.1. Что такое макрокоманды и почему на языке Lua.
1.2. Обзор редактора макрокоманд в МойОфис.
1.3. Запуск простой макрокоманды.
1.1. Что такое макрокоманды и почему на языке Lua
При работе с текстом, таблицами, фигурами или иными объектами в документах пользователь офисного ПО выполняет различные операции, используя кнопки на панели инструментов, пункты основного и контекстного меню, горячие клавиши. При этом каждое действие пользователя запускает ровно одну операцию над выбранным объектом.
Чтобы ускорить работу пользователей, разработчики редакторов создали множество инструментов, позволяющих выполнить сразу несколько операций с выбранными объектами – например, в текстовых редакторах с помощью стилей можно сразу изменить настройки шрифта и абзаца, во всех редакторах с помощью «кисточки» быстро перенести форматирование с одного объекта на другой, в табличном редакторе – автоматически применять форматирование к новым строкам.
Но что делать, если одну и ту же последовательность действий необходимо выполнить на нескольких листах в табличном документе? Или даже выполнить действия с несколькими разными объектами? Для этого придуманы макрокоманды (дословно – команды, которые позволяют выполнить несколько простых команд).
Макрокоманды (макросы) представляют собой программы небольшого размера, с помощью которых пользователь автоматизирует выполнение продолжительных или часто повторяющихся операций внутри документов. С помощью макрокоманд можно решать следующие задачи работы с документами и данными в них:
Автоматизировать форматирование текста.
Проверить корректность данных.
Отредактировать документ, заменить одни данные на другие.
Макросы фиксируются в виде программ на том языке программирования, который поддерживается в редакторах. Начинающие пользователи предпочитают работу с функцией «Запись макрокоманды», которая формирует код макроса, фиксируя действия пользователя. Опытные пользователи создают макросы «с нуля» во встроенной среде разработки, что позволяет использовать все возможности языка программирования, в том числе реализовать сценарии обработки данных, недоступные в интерфейсе программы.
Для того, чтобы пользователи могли самостоятельно разобраться в работе макросов, их создают и редактируют с использованием скриптовых языков программирования, для которых характерны следующие черты:
простой синтаксис, что обеспечивает быстрый старт.
хранение программ в виде текста, что упрощает изучение, отладку и контроль работы макросов.
выполнение программ с использованием интерпретатора (специальной программы, переводящей код в действия только при непосредственном вызове), что позволяет выполнять макросы по отдельности.
В редакторах МойОфис разработка макрокоманд ведется на языке программирования Lua, который не только является скриптовым языком программирования, но и обеспечивает дополнительные возможности:
Макросы одинаково работают в настольных редакторах МойОфис для ОС, Linux, для ОС Windows и в веб-редакторах.
Не требует покупки дополнительного ПО или специальных лицензий для работы.
Допускает подключение внешних модулей для расширения функциональных возможностей — так реализован доступ к объектам в документе.
Для создания макрокоманд в редакторах МойОфис можно использовать встроенные средства программирования или специальную функцию «Запись макрокоманды», которая фиксирует действия пользователя и сохраняет в виде программы.
Справочно о Lua
Язык Lua разработан в 1993 году, как средство программирования для пользователей, не являющихся профессиональными программистами. Малый размер интерпретатора, относительно высокая скорость исполнения и легкая расширяемость позволили этому языку найти применение в сфере разработки компьютерных игр. В 2003 году Lua был признан самым популярным скриптовым языком для разработки игр по версии сообщества GameDev.net. Также Lua активно используется для написания расширений и плагинов к программным продуктам, при создании пользовательских интерфейсов и в конфигурационных файлах.
Таким образом, язык Lua – интерпретируемый язык, созданный специально для непрограммистов, прост в освоении и платформонезависимый, а также давно зарекомендовал себя на мировом рынке как эффективный скриптовый язык.
1.2. Обзор редактора макрокоманд в МойОфис
Диалоговое окно «Редактирование макроса» открывает доступ к редактору макрокоманд, с помощью которого пользователь создает и запускает макрокоманду.
Запустите приложение «МойОфис Текст», затем в командном меню выберите пункт «Инструменты» и «Редактирование макроса».

Окно редактора макрокоманд является модальным по отношению к главному окну приложения. Это означает, что пользователь не может просматривать или редактировать текст документа, пока открыто окно редактора макрокоманд.
Чтобы закрыть окно редактора макрокоманд, необходимо нажать на крестик в строке заголовка окна. Специальной кнопки для сохранения введенной макрокоманды нет, при закрытии окна сохранение происходит автоматически.

Окно редактора макрокоманд состоит из областей:
Перечень созданных в документе макрокоманд.
Кнопки для создания и удаления макрокоманд.
Область ввода текста макрокоманд.
Кнопки выполнения и отладки макрокоманд.
Область вывода результата выполнения макрокоманд, а также отображения информации в процессе отладки макрокоманд.
Рассмотрим эти области подробнее.
1.2.1 Перечень макрокоманд в документе
Перечень представляет собой список макрокоманд в открытом документе. Вновь созданный документ не содержит макрокоманд. Если в перечне содержится несколько макрокоманд, переход между ними выполняется с помощью щелчка мыши по названию макроса, активная макрокоманда в перечне подсвечивается.
1.2.2 Кнопки для создания и удаления макрокоманд
Для добавления новой макрокоманды необходимо нажать кнопку с изображением знака «+». После её нажатия, в перечне появится новый пункт под названием «Без имени». В области ввода текста макрокоманды (область 3) появится надпись: «Введите новый скрипт здесь».
Чтобы задать название новой макрокоманде, достаточно начать печатать его с клавиатуры и нажать клавишу Ввод (Enter). Для изменения названия макрокоманды в перечне макрокоманд необходимо дважды щелкнуть левой кнопкой мыши по текущему названию и ввести новое имя. Возможно задавать имена макрокоманд как на русском, так и на английском языке (латиница).
Чтобы удалить макрокоманду, необходимо выделить ее и нажать кнопку с изображением знака «-» внизу списка макрокоманд.

1.2.3 Область ввода текста макрокоманды Область ввода представляет собой небольшой редактор текста и предназначена для написания исходного кода макрокоманды на языке программирования Lua. Редактор поддерживает синтаксис языка Lua. Обратите внимание, что ключевые слова языка отображаются синим цветом, комментарии – зеленым и т.д.

Область ввода поддерживает операции копировать (Ctrl+C), вырезать (Ctrl+X), вставить (Ctrl+V) через буфер обмена и операцию отмены последнего действия (Ctrl+Z). Для ввода кода макрокоманды необходимо создать и назвать ее, а затем набрать код макроса в области 3. Чтобы редактировать макрокоманду, необходимо выбрать ее в перечне макрокоманд и внести изменения в ее текст в области 3. 1.2.4 Кнопки выполнения и отладки макрокоманд Кнопки для выполнения и отладки становятся активными, изменяя цвет, после ввода текста макрокоманд в области 3. Чтобы выполнить код макрокоманды, необходимо нажать кнопку «Выполнить» (). Результат или статус выполнения макрокоманды отображается в области вывода результата выполнения макрокоманд (область 5 на рисунке 2). Макрокоманды также можно запускать, не открывая редактор. Для этого необходимо открыть список макросов, нажав на иконку «Макрокоманды» на правой боковой панели. Далее выбрать из списка макрос и нажать кнопку «Выполнить» (см. рисунок 5). Произойдет выполнение макроса без открытия редактора. Появится всплывающее сообщение «Макрокоманда выполнена».

При написании кода могут возникать ошибки. Помочь их выявить и локализовать может процесс отладки кода. Подробнее процесс отладки будет рассмотрен в занятии «Отладка кода макрокоманд». 1.2.5 Область вывода результата исполнения макрокоманды и процесса отладки Область вывода результата также называется консоль. В консоль выводятся любые значения, которые пользователь может напечатать с помощью функции print(). После нажатия кнопки «Выполнить» начинается выполнение исходного кода макрокоманды. Когда в исходном коде встречается вызов функции print, происходит немедленный вывод на печать значения функции. Например, выражение
print("МойОфис!")
приведет к тому, что в консоли будет напечатан текст МойОфис!

Если в консоли есть результат выполнения макроса, то в правом верхнем углу появляется кнопка «Очистить». Нажатие на эту кнопку очищает консоль (удаляет ее содержимое), не затрагивая код макрокоманды. Также в область результата выводится информация о выполнении макрокоманды. Если макрос выполнен успешно, то в консоль будет выведена информация «Макрос выполнен успешно». Если предполагается, что код макроса вносит изменения в документ без вывода в консоль, то результаты макроса можно будет увидеть в самом файле после закрытия окна редактирования. При выполнении процесса отладки в области вывода результатов отображаются дополнительные поля, содержащие информацию о процессе выполнения команд кода. О них подробнее будет рассказано в следующих занятиях.
1.3. Запуск простой макрокоманды Теперь давайте создадим первую макрокоманду и запустим ее. В окне редактирования макросов нажмите на кнопку «+» в перечне макрокоманд. В качестве имени макрокоманды укажем слово «Привет». В области ввода текста макрокоманды введем следующий текст:
print("Привет, МойОфис!")
Нажмем кнопку «Выполнить» для запуска макрокоманды. В консоли будет напечатан текст:
Привет, МойОфис!
Закроем окно редактора макрокоманд, нажав крестик в правом верхнем углу окна. Сохраним изменения (мы ведь создали макрокоманду!) в открытом документе нажатием кнопки «Сохранить» на панели команд или с помощью комбинации клавиш Ctrl+S. В качестве имени документа укажем «Макрокоманда-1».
Мы создали и выполнили первую макрокоманду, используя стандартную функцию print() языка программирования Lua. Функция print() предназначена для печати значения, переданного в качестве аргумента функции, то есть между круглых скобок (). Аргументом команды могут быть как текст, так и числа, переменные или целые выражения. Текст в качестве аргумента всегда пишется в кавычках, числа и переменные — без кавычек. Пример использования команды print() с различными аргументами:
Ввод в окне редактора макрокоманд |
print( 8 ) print("Фрукты: Яблоки, Груши, Апельсины") print( 2 + 2 + 2 ) |
Результат в консоли после нажатия кнопки «Выполнить» |
> 8 > Фрукты: Яблоки, Груши, Апельсины > 6 |
На следующем занятии будет рассмотрено более подробно, что называют переменными и с какими типами данных работает язык Lua. Для закрепления пройденного материала ответьте на вопросы и выполните практические задания в конце данного занятия.
Контрольные вопросы и задания
В каких ситуациях рационально использовать макрокоманды?
Чем обоснован выбор языка программирования Lua для написания макросов?
Как запустить окно редактирование макросов в редакторах МойОфис?
Наберите коды макрокоманд из примеров в редакторе макрокоманд. Попробуйте ввести свои данные в код и выполнить его.
Вот такая первая глава — заинтересовались? Если да, то приглашаем вас на эксклюзивный вебинар, посвященный языку Lua в настольных редакторах МойОфис. Также мы проводим специальный обучающий курс по Lua, на который можно записаться уже сейчас.
И конечно, приглашаем вас ознакомиться с нашими вакансиями. Тем более что в наших продуктах можно пощупать разработку на Lua изнутри :)
Комментарии (2)
AuToMaton
02.10.2025 15:41Круто. Курс, трёхтомник…
Всегда считал, что пользовательская Lua изучается за вечер двумя путями на выбор - либо распоследний вариант прочтением доков, либо самый нужный вариант открытием Neovim. И даже приводил её в пример когда спрашивали как вкатиться в IT. Больше не буду - (мои) знания в IT действительно устаревают на глазах.
Surrogate
А где эти книги можно купить или скачать?
В разделе Программа курса, если кликать по плюсикам (просмотр разделов курса) не видно подробностей!