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