Рассмотрим практический пример использование макросов VBA в повседневной работе предприятия для взаимодействия с БАНКОМ. Допустим, что Ваше предприятие обслуживается в ПАО «ВТБ». Рассмотрим две ситуации необходимые при работе бизнеса:
Вам необходимо открыть счета и выпустить карты для новых сотрудников
Вам необходимо произвести зачисление средств Вашим сотрудникам на карты
Для проведения данных операций Вам потребуется подготовить данные в формате, который будет удобен банку для последующей обработки. На сайте ПАО «ВТБ» в разделе зарплатный проект для бизнеса в разделе «Полезная информация -> ПО», Вы можете загрузить файлы в формате XLSM, которые помогут Вам выполнить эти две задачи.

Для выполнения первой задачи нам потребуется подготовить данные о наших новых сотрудниках в соответствии с инструкцией на скриншоте помеченной синим цветом и файл для подготовки данных makros_na_vypusk_kart_i_otkrytie_schetov_new.xlsm. Мы предварительно подготовили данные о новых сотрудниках – это вымышленные данные в формате в соответствии с инструкцией. Откроем данный файл в «Офис+ Таблицы» и нажмем на кнопку «Загрузка реестра» и выбираем подготовленный файл с данными о новых сотрудниках.

Результат выполнения операции загрузки данных показан на экране ниже:

Далее попробуем сформировать реестр нажав на кнопку «Сформировать электронный реестр». В результате мы получим информационное сообщение, что в данных имеются ошибки (одна критическая и 140 не критических ошибок) и реестр не может быть сформирован. Ячейки с критическими ошибками помечены красным, с не критическими желтым. Так же нам сообщается, что у одного из сотрудников неверно заданы паспортные данные, в частности ошибочная дата выдачи паспорта.

Исправим данные даты выдачи паспорта в красной ячейке на правильную дату. Нажмем на кнопку «Убрать подсветку ошибок» цвета ячеек будут сброшены. Попробуем переформировать реестр еще раз нажав на кнопку «Сформировать электронный реестр». Реестр сформирован и готов к отправке в банк.

Рассмотрим вторую задачу. Для этого нам понадобится загруженный с сайта ПАО «ВТБ» второй файл makros_zachislenie_multireestr.xlsm. Откроем данный файл в «Офис+ Таблицы» и нажмем на кнопку «Подгрузить данные в формате xls или xml» и выбираем подготовленный файл с данными для зачисления сотрудникам (файл с вымышленными данными подготовлен нами заранее).

Результат выполнения операции загрузки данных показан на экране ниже:

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

Наша цель сформировать данные для отправки в БАНК, поэтому вернемся на лист «ЗАЧИСЛЕНИЯ» и сформируем данные нажав на кнопку «Электронный реестр».

Реестры можно формировать и вручную набирая данные. В сочетании с ячейками, к которым применена функция проверки данных и макросов VBA, Вы получаете корректные данные для передачи в БАНК.
Подобная обработка ранее была доступна только в продуктах Microsoft. Однако теперь весь функционал, как мы Вам показали, Вы можете использовать в офисном пакете «Офис+ Стандартный». Кроме того, поскольку «Офис+ Стандартный» функционирует не только под Windows, но и под Linux, в том числе и на российских операционных системах «РЕД ОС» или «AstraLinux», этот функционал Вам будет доступен и в них.
Комментарии (23)

Akina
04.11.2025 18:59Однако теперь весь функционал, как мы Вам показали, Вы можете использовать в офисном пакете «Офис+ Стандартный».
Следует ли это понимать так, что средства встроенного языка указанного офисного пакета поддерживают объектную модель MS Excel в полном объёме? И внешние подключаемые референсы, в т.ч. не известные нативному офису, но имеющиеся на локальной станции.
поскольку «Офис+ Стандартный» функционирует не только под Windows, но и под Linux ... этот функционал Вам будет доступен и в них.
Эмм... если у меня макрос подключает Microsoft Scripting Runtime и пользует оттуда FileSystemObject и прочее мракобесие - то при использовании указанного офисного пакета я всё это получу под Линём? И даже позднее связывание работает?

Surrogate
04.11.2025 18:59Следует ли это понимать так, что средства встроенного языка указанного офисного пакета поддерживают объектную модель MS Excel в полном объёме?
Думаю, все ограничено объектной моделью самого Офис+. Главный вопрос, на сколько она беднее модели MS Excel?

cancel77 Автор
04.11.2025 18:59Конечно она меньше MS Excel, но вполне позволяет заниматься обработкой данных, объектов и наводить марофет по ячейкам.

Surrogate
04.11.2025 18:59@cancel77, спасибо, для моих задач вроде этого достаточно.
Сводные таблицы с PowerQuery для меня излишество!
Я работаю в организации с очень замысловатыми требованиями к оформлению документации. Наши клиенты (преобладающее большинство) лютейшие извращенцы на тему шрифтов, отступов и межстрочных расстояний!!!
Увидеть
чад кутежа во мраке адавнешний вид пользовательских лент в наших шаблонах можно здесь.За долгие годы в MS Word был наработан богатый инструментарий для работы со стилями, разделами документов и т.п. В этом таинственном Офис+ можно ли будет реализовать что-то подобное?

cancel77 Автор
04.11.2025 18:59@Surrogate, Видел я извращения на тему оформления по гостам документов, по-моему в документах РЖД. Офис+ поддерживает cutomUI, но довольно своеобразно, он у них отображается на боковой панели и все маленькими кнопочками, в том числе и вызов макросов. Думаю в саппорте Вам подскажут.

Surrogate
04.11.2025 18:59@cancel77, спасибо за обратную связь. Надо будет покопаться, для общего развития!
Печалька в том, то что наши Заказчики импортозамещаются на МойОфис и R7-Office.

cancel77 Автор
04.11.2025 18:59Говорить про требования к оформлению через стили и про МойОфис это не корректно. Р7 тоже со стилями не всегда обрабатывает нормально, особенно при наследовании.

Surrogate
04.11.2025 18:59В МойОфис я и не заглядывал даже.
У меня есть списочек багов, который встречаются в LibreOffice при открытии документов созданных в MS Word. Я посмотрел эти баги в OnlyOffice (клоном которого является R7-Office), см. коммент к Хабро-статье…
Для OnlyOffice из этого списка встречается:
проблема с оглавлением (вылезает за рамки по высоте)
Совместимость получше, чем у Либры!

cancel77 Автор
04.11.2025 18:59Это и есть краеугольная проблема. Описание открытого формата OpenXML регламентирует объекты и их атрибуты, но при этом эталоном отображения является Ворд. И мелкомягкие, там творят, что хотят, а потом пользователи требуют идентичного отображения от разработчиков аналогов. Вопрос в другом реагирует ли служба саппорта производителя аналога или посылает. Надо общаться, выяснять.

Surrogate
04.11.2025 18:59Для нас еще проблема:
Заказчик A импортозаместился на продукт X;
Заказчик B импортозаместился на продукт Y;
и т.д. по всему спектру импортозаместительных продуктов.
В своих
хотелкахТехнических заданиях Заказчики пишут:Компания-Разработчик обязана предоставить Компании-Заказчику текстовую документацию в формате X/Y/Z/…/ЁПРСТ.
Раньше документацию мы предоставляли ТОЛЬКО в формате PDF, но те благословенные времена прошли. Наши коллеги которые заключат договора, подписываются под такими хотелками…
Даже если служба саппорта производителя не посылает, то надо будет разорваться!

cancel77 Автор
04.11.2025 18:59@Surrogate Сейчас смог увидеть картинки с customUI, в целом ничего страшного, но потребуются доработки, насколько я понимаю.

cancel77 Автор
04.11.2025 18:59Здравствуйте Akina. Поддерживается практически полная архитектура классов для обработки данных, формально поддержаны классы взаимодействия с интерфейсом, видимо из-за различий архитектуры приложений. Что касается поддержки COM/ActiveX там поддерживаются библиотеки ADODB, MSXML2, VBScript, Scripting как раз FileSystemObject. Да, и Вы все это получите под Linux с полной обратной совместимостью с Мелкомягкими. Их саппорт говорит что они готовы расширять набор покрытия классов и внешних библиотек(типа COM/ActiveX) по мере необходимости пользователей.

Akina
04.11.2025 18:59Это очень обнадёживает.
А насколько вменяема система диагностических сообщений? возможно ли с первого предъявления сообщения об ошибке и дополнительных данных к нему если не пофиксить проблему, то по крайней мере точно понять, в чём проблема и как она должна быть устранена (подключить референс, проверить имя константы, добавить недостающий обязательный параметр и пр.). Особенно при позднем связывании.
И как именно офис реагирует на неподдерживаемые референсы? И когда - при загрузке, запуске, в точке обращения...

cancel77 Автор
04.11.2025 18:59Akina, сначала про референсы - как таковых подключений там нет, потому как это библиотеки с поздним связыванием, о которых знает интерпретатор. Поэтому он их сам подключит при использовании CreateObject или объявлении. Единственное надо указывать, типа референс, если вы собираетесь внутри Таблиц открывать Документ и наоборот.
Что касается вменяемых диагностических сообщений, их не возможно реализовать в языке с неявным определением переменных. Поэтому как и в мелкомягком, есть ошибки компиляции и редактор кода показывает место, в котором ошибка и runtime-ошибка выскакивающая в виде инфо-диалога. Ну а в остальном как и в VBA debug.print и MsgBox нам в помощь.

rukhi7
04.11.2025 18:59и Вы все это получите под Linux с полной обратной совместимостью с
не может быть!!! Вы уже выучили это сочетанием слов, словосочетание: "полная обратная совместимость"??? Осталось совсем недолго! Лет десять(!) до появления первого вменяемого продукта! Вам осталось понять что такое продукт!
Сколько всего может изменить ся за 10 лет! Да! я не в чем не уверен.

cancel77 Автор
04.11.2025 18:59Я вам больше скажу, я проверил эту обратную совместимость - и работает, макросы написанные в офис+ работают в мелкомягком и наоборот. А почему за 10 лет, если не секрет? Я занимаюсь разработкой софта больше 25 и вы правы ничего лучше чем ООП не придумали.

rukhi7
04.11.2025 18:59Это вроде как не обратная совместимость, а кросплатформенная когда и там и там.
Да нет 10- просто число круглое, я имел ввиду годы нужны и конкретное число не важно, потому что со временем цели, мотивы меняются все уйдет в сторону, до результата не дойдет, до реального продукта который будет продаваться и будет являться основой других направлений.
Но теперь мне кажется что конкретно у вас могло бы получиться гораздо раньше, но... Есть одно большое но! Один человек не может создать такой продукт, нужна группа единомышленников, которые смогли бы создать школу и смогли бы наладить воспроизводство-наследование компетенции-экспертизы. Конкретная программа-приложение-софт как продукт это только побочный результат, безусловно очень важный, но основой должны быть воспроизводимые, наследуемые и само-верефицируемые(как раз через софт как продукт на продажу, в том числе) компетенция-экспертиза. Как вы думаете сколько времени надо чтобы появилась организация среди людей (институциональная) которая способствует росту и распространению такой компетенции?
Насколько я это знаю мелко-мягкие это не просто успешная коммерческая компания, это в основе своей школа-институт разработки софта и даже сопровождения разработки железа с точки зрения управления этого железа софтом. И много чего еще чего мы не очень себе и представить можем.

NewDevLab
04.11.2025 18:59Не очень понятно. Они реализовали COM под Linux?

cancel77 Автор
04.11.2025 18:59Нет конечно, просто реализовали наиболее используемые COM/ActiveX объекты с поздним связыванием. Кроме того они предлагают заготовку проекта для расширения функционала для их VBA и сами готовы расширять набор используемых пользователями COM/ActiveX. Поскольку у них по сути интерпретатор, работающий и на винде и на линуксе, это решает многие вопросы безопасности связанные с VBA.

kompilainenn2
04.11.2025 18:59А что это вообще за офис такой? Самобытный или на чем то основан?

cancel77 Автор
04.11.2025 18:59Насколько я знаю опенсоурсные решения - опен, либра, онли, ни один из них не умеет масштабировать и показывать страницы документа в приложении, например в ряд по 5 страниц и позволять их редактировать значит отрисовка и обработка событий у них собственная. Учитывая, что они смогли сделать поддержку VBA, значит и модель у них собственная. Получается что Самобытный .
anonymous
cancel77 Автор
питон не может, сорри