Migsoft
0

Макросы в Р7-Офис: как перенести VBA на JavaScript

Макросы в Р7-Офис работают на JavaScript, а не на VBA, поэтому макрос из Excel или Word не запустится как есть. Разбираем, как устроена автоматизация в Р7, как провести аудит макросов и какие из них переносить.

Виталий Куренков
Менеджер ООО «МИГСОФТ»: подбор лицензий российского ПО, счета и закрывающие документы для юрлиц
24 сентября 2026 · 8 минут чтения · Обновлено 4 октября
Содержание

Макросы в Р7-Офис есть, но пишутся они на JavaScript, а не на Visual Basic для приложений (VBA). Поэтому макрос, который годами жил в книге Excel или шаблоне Word, после перехода не запустится сам: его нужно перевести. Звучит страшнее, чем выглядит: большая часть макросов в компаниях либо давно не используется, либо заменяется штатной функцией редактора, а переписывать приходится немногое. Ниже — как устроены макросы Р7, чем они отличаются от VBA и в каком порядке переносить автоматизацию, чтобы переход на Р7-Офис не остановил работу бухгалтерии или отдела продаж.

Почему макрос из Excel не запустится в Р7-Офис

VBA — язык Microsoft, и выполнять его умеет только Microsoft Office. Р7-Офис работает на Windows, Linux и macOS и в браузере, а в Linux и в веб-версии запустить VBA невозможно в принципе — поэтому вендор выбрал для макросов JavaScript, который одинаково работает на всех платформах. Совместимости с VBA нет и не будет: код нужно переписать.

Хорошая новость в том, что файлы от этого не портятся. Если открыть книгу .xlsm с VBA-макросом в Р7-Офис и сохранить её, исходный код макроса остаётся в файле нетронутым — это подтверждает вендор. Значит, переводить документы можно постепенно: пока макрос не переписан, файл по-прежнему откроется в Excel у того, кому он нужен.

Как устроены макросы в Р7-Офис

Макрос Р7 — небольшой скрипт на JavaScript, который обращается к документу через программный интерфейс редакторов (API Document Builder): получить лист, диапазон ячеек, абзац, таблицу — и что-то с ними сделать. Работа с макросами идёт на вкладке «Плагины» → «Макросы»: здесь их создают, переименовывают, запускают кнопкой «Выполнить» и удаляют.

Что важно знать до переноса:

  • Макрос хранится в документе. Сделать его «глобальным», как личную книгу макросов Excel, нельзя. Если инструмент нужен всем сотрудникам во всех файлах, его оформляют плагином — о нём ниже.
  • У макроса нет доступа к системе. Код выполняется внутри редактора: он не читает файлы на диске и не управляет другими программами. Для безопасности это плюс, для переноса — главное ограничение.
  • Запуск кнопкой. В редакторе таблиц макрос можно назначить фигуре или картинке («Назначить макрос» в контекстном меню) — щелчок по ней запускает скрипт.
  • Автозапуск. Макросу можно поставить признак «Автостарт», и он выполнится при открытии документа, если это разрешает настройка редактора.

Прежде чем писать макрос с нуля, загляните в примеры вендора: подсветка дубликатов, поиск следующей пустой строки, загрузка курсов валют, объединение ячеек. С них удобно начинать перевод похожих задач.

Примеры и справочник методов лежат в разделе «Макросы» справочного центра Р7.

VBA и JavaScript: чем отличаются макросы

VBA в Microsoft Office Макросы в Р7-Офис
Язык Visual Basic для приложений JavaScript и API редакторов
Где работают Windows-версия Office Windows, Linux, macOS, веб-редакторы
Где хранятся в документе, надстройке или личной книге макросов только в документе; общий инструмент — плагин
Доступ к файлам и другим программам есть нет, код работает внутри редактора
Запуск из списка, кнопкой, событием из окна «Макросы», фигурой с назначенным макросом, автостартом
Отладка редактор VBA консоль разработчика

Для переноса из таблицы следуют два вывода. Макрос, который считает, форматирует и раскладывает данные внутри документа, переводится почти строка в строку. Макрос, который выгружает файлы в папку, отправляет письма через Outlook или обращается к 1С, в JavaScript-макрос не превратится: такую задачу переносят в плагин или в интеграцию на стороне сервера.

Как выглядит перевод макроса с VBA

Возьмём пример из документации вендора: макрос складывает три диапазона столбца A и пишет результат в столбец B. На VBA:

Sub Example()
    Dim result
    Dim Run As Long
    For Run = 1 To 3
        Select Case Run
            Case 1: result = "=SUM(A1:A100)"
            Case 2: result = "=SUM(A1:A300)"
            Case 3: result = "=SUM(A1:A25)"
        End Select
        ActiveSheet.Range("B" & Run) = result
    Next Run
End Sub

То же в Р7-Офис:

(function () {
    for (let run = 1; run <= 3; run++) {
        let result = "";
        switch (run) {
            case 1: result = "=SUM(A1:A100)"; break;
            case 2: result = "=SUM(A1:A300)"; break;
            case 3: result = "=SUM(A1:A25)"; break;
        }
        Api.GetActiveSheet().GetRange("B" + run).Value = result;
    }
})();

Логика та же, меняются синтаксис и имена объектов: ActiveSheet становится Api.GetActiveSheet(), Range — GetRange. Переменные в макросах Р7 обязательно объявлять: скрипты выполняются в строгом режиме JavaScript. Для отладки в веб-версии открывают консоль разработчика клавишей F12, а десктопные редакторы запускают с параметром --ascdesktop-support-debug-info, после чего консоль вызывается клавишей F1.

Аудит макросов перед переходом

Переписывать всё подряд — самый дорогой путь. Практика внедрений Р7 другая: сначала выяснить, какие макросы действительно работают, и только их переводить.

  1. Соберите файлы с макросами. Это книги и документы с поддержкой макросов (.xlsm, .xlsb, .docm, .pptm), надстройки (.xlam, .dotm) и личные книги макросов сотрудников.
  2. Выясните, кто и как часто их запускает. Для этого удобно поставить Р7-Офис рядом с Microsoft Office, не меняя ассоциации файлов, — при тихой установке MSI это параметр REGISTER_NONE=1 — и понаблюдать, какие документы реально открываются в старом пакете.
  3. Разложите макросы по корзинам: не нужен — удалить; заменяется штатной функцией (сводные таблицы со срезами, условное форматирование, удаление дубликатов) — не переписывать; работает внутри документа — перевести в JavaScript-макрос; нужен всем или требует интерфейса — сделать плагином; обменивается данными с учётной системой — вынести в интеграцию.
  4. Переводите в порядке зависимости. Первыми на Р7 уходят рабочие места без макросов, последними — сотрудники, чья работа завязана на интеграции.

Что происходит с макросом при переходе

Два типичных макроса — и куда каждый попадает после аудита.

Считает в книге

Макрос считает, форматирует и раскладывает данные внутри документа.

  1. Книга .xlsm макрос на VBA

    Макрос годами жил в книге Excel. VBA умеет выполнять только Microsoft Office, поэтому в Р7-Офис его переводят на JavaScript.

  2. Открыли в Р7-Офис VBA-код в файле цел

    Сам макрос не запустится, но после сохранения в Р7-Офис исходный код остаётся в файле нетронутым — у того, кому нужен Excel, файл по-прежнему откроется.

  3. Аудит наблюдаем за старым пакетом макрос в работе макрос реально запускают

    Р7-Офис ставят рядом с Microsoft Office, не меняя ассоциации файлов, и смотрят, какие документы реально открываются в старом пакете. Ненужное удаляют, заменяемое штатной функцией не переписывают.

  4. Перевод на JavaScript почти строка в строку

    Логика та же, меняются синтаксис и имена объектов: ActiveSheet становится Api.GetActiveSheet(), Range — GetRange. Переменные объявляют обязательно.

  5. Кнопка в таблице Windows, Linux, веб

    Макрос назначают фигуре или картинке — щелчок по ней запускает скрипт.

Платить за перевод приходится один раз: дальше макрос одинаково работает на Windows, Linux и в веб-редакторах. Итог — в конце сценария

Ходит в 1С или почту

Макрос выгружает файлы в папку, отправляет письма через Outlook или обращается к 1С.

  1. Книга с макросом выгрузка в 1С и письма

    Макрос выгружает файлы в папку, отправляет письма через Outlook или обращается к 1С.

  2. Аудит корзина «интеграция»

    Макрос, который обменивается данными с учётной системой, на аудите откладывают в корзину «вынести в интеграцию».

  3. JavaScript-макрос работает только внутри редактора

    Код макроса Р7 не читает файлы на диске и не управляет другими программами. Для безопасности это плюс, для переноса — главное ограничение.

  4. Плагин или интеграция на стороне сервера

    Такую задачу переносят в плагин или в интеграцию на стороне сервера. Когда макросов много или они связаны с учётными системами, перенос заказывают у партнёров-интеграторов Р7.

  5. Последняя волна переходят последними

    Первыми на Р7 уходят рабочие места без макросов, последними — сотрудники, чья работа завязана на интеграции.

Объём работ оценивают по реестру макросов, собранному на аудите, — по нему же выбирают исполнителя. Итог — в конце сценария

Схема упрощена: показаны два типичных случая переноса макросов.

Когда нужен плагин, а не макрос

Плагин — это расширение редактора на HTML и JavaScript со своей кнопкой и окном. В отличие от макроса он не привязан к документу: его устанавливают в редакторы, и он доступен во всех файлах. Плагин — правильный выбор, когда инструментом пользуется весь отдел, нужен диалог с полями ввода или шаблон должен одинаково работать у сотни сотрудников.

Готовые плагины есть в каталоге вендора — более 30 решений: распознавание текста (OCR), редактор изображений, QR-коды, водяные знаки, автосохранение и другие. Свой плагин для внутренних процессов пишется по руководству разработчика на support.r7-office.ru и ставится через вкладку «Плагины».

Как управлять макросами на парке компьютеров

Администратор решает, будут ли макросы выполняться сами. В «Дополнительных параметрах» редактора (вкладка «Файл») есть три режима автозапуска: «Включить все», «Показывать уведомления» — перед запуском пользователь видит предупреждение и сам разрешает или запрещает — и «Отключить все».

Если политика безопасности требует запретить автозапуск без права пользователя что-то поменять, это делается в конфигурации редакторов: параметр macros: false скрывает настройку и выключает автозапуск. Так же можно убрать из интерфейса кнопку «Макросы» и запретить сотрудникам устанавливать сторонние плагины. Вендор предупреждает, что такие правки делаются с правами администратора и после резервной копии изменяемых файлов, — подробные инструкции есть в справочном центре.

Макрос с автостартом выполняется при открытии файла. Для документов, пришедших извне, безопаснее режим «Показывать уведомления»: пользователь увидит, что в файле есть макросы, до их запуска.

Кто перепишет макросы

Небольшой набор макросов переводит сотрудник, который знает VBA и готов разобраться в JavaScript: API редакторов описан в справочном центре, примеры можно брать оттуда же. Для обучения у вендора есть электронный курс «Р7 офис. Макросы» на 8 академических часов, а авторизованные учебные центры ведут курс по макросам Р7 онлайн и очно.

Когда макросов много или они связаны с учётными системами, перенос заказывают у партнёров-интеграторов Р7. Платить за переписанный макрос приходится один раз: дальше он одинаково работает на Windows, Linux и в веб-редакторах. Прежде чем выбирать исполнителя, соберите реестр макросов по шагам аудита выше — по нему оценивают объём работ.

Лицензии Р7-Офис для перехода

Макросы и плагины входят в десктопную версию Р7-Офис вместе с редакторами. Лицензия считается на рабочее место, виды — бессрочная, подписка на год и продление права на обновления. Из чего складывается закупка для организации, подробно разобрано в статье «Р7-Офис: редакции, тарифы и лицензирование», а как установить и активировать лицензии на парке компьютеров — в отдельной инструкции. Сравнение с другими офисными пакетами — в статье «Р7-Офис, МойОфис или ONLYOFFICE».

Товар Р7-Офис Профессиональный (десктопная версия) от 6 000 ₽ Смотреть →

Для пилота на нескольких рабочих местах обычно берут бессрочную лицензию десктопной версии — после первого года программа продолжает работать, а обновления продлеваются отдельной позицией:

Р7-Офис. Профессиональный (Десктопная версия), лицензия на 1 год с правом бессрочного использования
Рекомендуем в статье Р7-Офис. Профессиональный (Десктопная версия), лицензия на 1 год с правом бессрочного использования
R7DTB.UI.RS.1YUL0.0725
15 300 ₽ НДС не облагается (ст. 149 НК РФ) — позиция в реестре российского ПО
В корзине Подробнее →

ООО «МИГСОФТ» — авторизованный партнёр АО «Р7». Лицензии Р7-Офис включены в реестр российского ПО и не облагаются НДС; счёт, договор и закрывающие документы оформляем на юрлицо. Цены и все редакции Р7-Офис — на карточке десктопной версии.

Авторизованный партнёр
Авторизованный партнёр «Р7-Офис».
Документы для тендера
КП с печатью, счёт, УПД, номера реестра в спецификации.
Сверка совместимости
Проверим вашу конфигурацию по базе вендора до оплаты — бесплатно.

Частые вопросы

Как включить макросы в Р7-Офис? +

Макросы открываются на вкладке «Плагины» → «Макросы»: там их создают, переименовывают и запускают кнопкой «Выполнить». Автоматический запуск при открытии файла настраивается во вкладке «Файл» → «Дополнительные параметры»: «Включить все», «Показывать уведомления» или «Отключить все». Если этой настройки нет, её скрыл администратор.

Можно ли запустить макрос VBA в Р7-Офис без переписывания? +

Нет. Р7-Офис выполняет макросы на JavaScript, а VBA не запускается ни в Linux, ни в веб-редакторах, поэтому вендор совместимость с VBA не делает. Макрос переводят на JavaScript — если он работает только с данными документа, логика переносится почти строка в строку.

Пропадёт ли VBA-код из файла, если сохранить его в Р7-Офис? +

Нет. Исходный VBA-макрос при открытии и сохранении в Р7-Офис остаётся в файле без изменений, поэтому документы можно переводить постепенно: у тех, кто ещё работает в Microsoft Office, макрос продолжит работать.

Можно ли сделать макрос общим для всех документов? +

Нет: макрос в Р7-Офис хранится в конкретном документе. Инструмент, который нужен во всех файлах и всем сотрудникам, оформляют плагином — его устанавливают в редакторы, и он доступен в любом документе.

Где найти примеры макросов Р7-Офис на JavaScript? +

В справочном центре вендора, в разделе «Макросы» → «Примеры макросов»: подсветка дубликатов, поиск пустой строки, курсы валют, форматирование диапазона как таблицы и другие. Там же описан API редакторов. Для обучения у вендора есть электронный курс «Р7 офис. Макросы» на 8 академических часов.

Как запустить макрос кнопкой и записать им значение в ячейку? +

В редакторе таблиц вставьте фигуру или картинку, щёлкните по ней правой кнопкой и выберите «Назначить макрос» — после этого щелчок по фигуре запускает скрипт. Значение в ячейку макрос записывает строкой вида Api.GetActiveSheet().GetRange("B1").Value = 100;.

Виталий Куренков
Менеджер ООО «МИГСОФТ»: подбор лицензий российского ПО, счета и закрывающие документы для юрлиц

Читайте дальше

Чем заменить VMware: российские платформы виртуализации Киберпротект · Импортозамещение Чем заменить VMware: российские платформы виртуализации Российские платформы виртуализации заменяют VMware vSphere: гипервизор KVM, кластер с высокой доступностью и перенос машин из vCenter или ESXi. Разбираем, что сейчас с лицензиями VMware, чем отличаются Кибер Инфраструктура, РЕД Виртуализация, Альт Виртуализация, ROSA Virtualization, «Брест» и VMmanager, как их лицензируют и какие сертифицированы ФСТЭК. 6 октября 2026 · 10 мин чтения Чем заменить Acronis и Veeam: российские системы бэкапа Киберпротект · Импортозамещение Чем заменить Acronis и Veeam: российские системы бэкапа Российский аналог Acronis и Veeam подбирают по задаче: Кибер Бэкап закрывает и компьютеры Windows, где стоял Acronis True Image, и серверы, базы данных и виртуальные машины, которые защищали Acronis Backup и Veeam. Разбираем, что на что менять, как считаются лицензии и как перейти, не потеряв старые копии. 6 октября 2026 · 10 мин чтения Российский почтовый сервер для организации: как выбрать Импортозамещение Российский почтовый сервер для организации: как выбрать Российский почтовый сервер ставят вместо Microsoft Exchange, чтобы почта, календари и адресная книга остались в контуре компании, — или переходят на российскую облачную почту. Сравниваем RuPost, CommuniGate Pro и VK WorkMail: где работают, как лицензируются, у кого есть сертификат ФСТЭК и когда проще выбрать облако. 27 сентября 2026 · 10 мин чтения
Р7-Офис. Профессиональный (Десктопная версия), лицензия на 1 год с правом бессрочного использования
15 300 ₽
В корзине