Отличия разработки на VBA для MS Excel по сравнению JavaScript для Р7-Офис

ce27d925459f5f0c78ea08c35170d381.png

Публикуется первая глава бесплатного курса основы разработки для Р7 . Дополнительные материалы можно найти вот тут

Особенности разработки в MS Office (Excel)

Базовым средством автоматизации в офисном пакете Microsoft Office, в течение длительного времени (С 1996 года по настоящее время) является скриптовый язык VBA (VisualBasic for Application). C 2007 года VBA не лицензируется для других разработчиков. Согласно статьи в Википедии , посвященной VBA, этот язык является неким упрощенным подмножеством языка VisualBasic.

Рассмотрим некоторые особенности VBA, которые потом будут являться основой для средств автоматизации в Р7:

  • Хотя язык VBA и не является полноценным объектно-ориентированным, в его структуру разработчики внедрили «объектную модель» как самого приложения, так и структуры документа этого приложения. Пользователь прямо «из коробки» получает возможность с помощью скриптов влиять на состояние программы и активного документа.

  • Ещё одним огромным плюсом MS Office является возможность записи ручных действий пользователя (причем как действий с интерфейсом самой программы, так и действий с документом) в программный код VBA, который далее можно запустить, чтобы повторить последовательность действий. Это и есть изначальная идея макросов.

  • Возможность визуального построения средств графического интерфейса между пользователем и программным продуктом, за что VBA и получил в названии слово Visual (визуальный). Это позволяет построить сложные среды для работы пользователя, с развитой логикой работы, которая может включать в себя процессы, связанные с другими программными продуктами внутри офисного пакета.

  • Изначально VBA использует глубокую интеграцию с технологиями системной программной автоматизации Microsoft, такими как ActiveX, COM и OLE. Поскольку эти технологии лежат в основе самой объектной модели VBA, Microsoft Office и тех программных продуктов, где происходит интеграция VBA как языка автоматизации, внедрение этих технологий скрыто от конечного пользователя. Это упрощает работу с ними и расширяет возможности пользовательских форм макросов, позволяя внедрять готовые сторонние решения легким по сравнению со многими другими языками программирования способами.

  • VBA имеет встроенную возможность использовать системные или прикладные библиотеки (dll), тем самым давая возможность пользователю интегрировать заложенные в этих библиотеках функции в свои макросы, расширяя их возможности за счёт уже готовых API, как операционной системы Windows, так и любых других API, зарегистрированных в операционной системе.

  • Для построения сложных макросов или редактирования записанных, используется интегрированная в приложение среда разработки (IDE — Integrated Development Environment). IDE устарела, но до сих пор предоставляет все необходимые базовые возможности по разработке и отладке.

Помимо VBA, в более поздних версиях были добавлены средства автоматизации (в том числе и интегрированные) на других языках программирования (C++, C#), такие как VSTA (Visual Studio Tools for Applications). Добавлена поддержка построения макросов на языках Python. Помимо этого, появилась форма дополнительной функциональности офисных пакетов, называемая расширением (add-in) на языке JavaScript. Функциональность и принципы построения расширений выходят за рамки данного курса.

Особенностью использования VBA в Microsoft Office является то, что макросы не могут использоваться отдельно, вне документов. Для своего использования макрос должен быть сохранён в составе документа, и для повторного использования он должен быть открыт в редакторе.

Если требуется независимая от документов дополнительная функциональность, следует создавать расширение (add-in) и инсталлировать его с помощью средств офиса.

Особенности разработки в Р7-Офис JavaScript

В офисном пакете Р7 есть два типа встраиваемой автоматизации действий пользователя: макросы и плагины.

Макросы — это скрипты автоматизации, интегрированные в документ и действующие только в рамках этого документа. Макросы в Р7, в отличие от MS Office, не могут записывать действия пользователя в скрипт с последующим воспроизведением таких действий. Для макросов используется встроенный в редактор плагин «макрос», который, хотя и ограничен по функциональности по сравнению с полноценными IDE, не требует отдельного внешнего редактора. В него интегрирован простейший отладчик, позволяющий ставить точки останова и просматривать значения некоторых из переменных при остановке, что полезно при разработке макросов.

Плагины — это независимые от документов наборы файлов, упакованные как zip архив (с расширением .plugin) и инсталлированные в приложения. Плагины могут иметь отдельный интерфейс пользователя, построенный по технологии HTML, CSS и JavaScript. Для их создания можно использовать любой редактор программного кода, поддерживающий JavaScript, например, Microsoft Visual Studio Code. Отладка плагинов может производиться только при использовании ключа запуска приложения »--ascdesktop-support-debug-info». Это позволяет после запуска плагина через контекстное меню редактора вызывать DevTools, представляющую собой среду отладки Chromium, на базе которого построен интерфейс редакторов Р7.

Процесс создания и отладки макросов и плагинов будет рассмотрен позже на соответствующих занятиях. Для создания своих средств автоматизации в редакторе Р7-Офис требуется базовое знание скриптового языка JavaScript, языка веб-разметки HTML и языка форматирования CSS. В рамках вводного курса будет рассмотрен JavaScript в минимальном объеме. Языки HTML и CSS придется изучить самостоятельно.

API для работы с приложением и документами предоставлено в ограниченном объёме, не все возможности доступные пользователю при работе с редактором и документами доступны для автоматизации в плагинах и макросах. В связи с особенностью архитектуры самого редактора очень ограничены возможности по взаимодействию между плагином и операционной системой. Например, нельзя штатными способами сохранить данные в произвольный файл на жесткий диск или организовать взаимодействие между плагином и внешними программами без использования квази-прокси серверов. Все подобные ограничения будут рассмотрены на соответствующих занятиях.

Основные различия разработки MS Office от Р7-Офис

Основные различия в разработке средств автоматизации в MS Office от Р7-Офис состоят в следующем:

MS Office

Р7-Офис

Язык разработки

VBA (для макросов) JavaScript (для add-in)

JavaScript (для макросов и плагинов)

Среда разработки

Встроенная IDE

Встроенный плагин -редактор макросов (но очень ограниченный по функциональности) , и только внешняя для плагинов (любая среда с поддержкой разработки на html +css+ javascript)

Запись действий пользователя в макрос

Почти полная поддержка

Отсутствует

Возможность работы с функциями ОС

Полная поддержка

Возможности ограничены требованиями безопасности для Web приложений (например, нельзя сохранить файлы на жесткий диск)

Взаимодействие с API приложения

Полная поддержка

Есть ограничения и далеко не все функции доступны при разработке

Взаимодействие с API документов

Полная поддержка

Есть ограничения и далеко не все функции доступны при разработке

Возможность использования внешних библиотек

Полная поддержка

Ограничены возможностями JavaScript и различных фреймворков на его базе

Возможности программирования форм пользователя

Используется модель WindowsForms

Все доступные возможности построения интерфейсов на базе HTML+ JavaScript

Как видно из этой таблицы, в силу ограничений как самой архитектуры приложений Р7, так и реализации его API на текущий момент, перенос макросов для ряда задач, созданных в MS Office, в Р7 не представляется возможным без привлечения внешних серверных расширений. Это может привести к частичному использованию всего накопленного опыта автоматизации в VBA.

Различия между языками программирования (VBA и JavaScript) потребуют наличия специалистов, хорошо разбирающихся в особенностях программирования макросов на VBA в MS Office и JavaScript в Р7-Офис при переходе между офисными пакетами. Тем не менее, для большинства задач такой процесс возможен, хотя и с указанными выше оговорками и ограничениями. Примеры таких переходов будут рассмотрены на последующих занятиях.

© Habrahabr.ru