Что такое VBA — ограничения, перспективы, когда стоит заменить и как мигрировать

· Обновлено: · · VBA, Excel, Office, Использование существующих активов и миграция, Разработка Windows

История изменений (1 обновлений, последнее 30 Aug 2026)

Журнал изменений этой статьи. Там, где версия до правки была заархивирована, она остаётся доступной для чтения по постоянной ссылке с DOI.

Русский текст переписан как полноценный технический перевод, а не калька с японского. Утверждения статьи не менялись.
Первая публикация
Цитирование статьи(DOI: 10.5281/zenodo.21619772)

Статья заархивирована на Zenodo. Ниже приведены DOI, который всегда ведёт к последней версии, и DOI, закреплённый за версией, которую вы читаете.

Го Комура (2026). Что такое VBA — ограничения, перспективы, когда стоит заменить и как мигрировать. KomuraSoft LLC. https://doi.org/10.5281/zenodo.21619772 https://comcomponent.com/ru/blog/2026/03/23/000-what-is-vba-limits-future-replacement/

DOI (последняя версия)
10.5281/zenodo.21619772
DOI (эта версия)
10.5281/zenodo.21619773

В консультациях по VBA часто смешиваются такие вопросы.

  • Что такое VBA в принципе
  • Говорят, что макросы опасны — стоит ли вообще от них отказаться
  • Перестанет ли это работать в будущем
  • Стоит ли переносить всё в Office Scripts или Power Automate
  • Оставлять существующие .xlsm и наработки Access или избавляться от них
  • Можно ли запускать Excel в ночных пакетных заданиях или на сервере

Одним универсальным ответом это не закрыть. Смотреть в первую очередь стоит не на новизну или старость, а на то, где это выполняется, кто этим пользуется, является ли сам Excel / Access интерфейсом и нужно ли выполнение без участия пользователя.

Оси, с которых начинают решение по VBAРешение оставить VBA или заменить его определяется не новизной, а тем, где выполняется код, кто им пользуется, является ли сам Excel или Access интерфейсом и нужно ли выполнение без участия пользователя.Новизна или старостьНе первая ось решенияС чего начинатьГде выполняетсяКто пользуетсяExcel / Access сам является UIНужно ли выполнение без участия пользователя

Рис. 1: Ось решения по VBA — не новизна, а место выполнения, пользователь, UI и неинтерактивный запуск.

В статье по порядку разберём, что такое VBA, где проходят его ограничения, перестанет ли он работать, в каких случаях его стоит заменить и как реалистично провести поэтапную миграцию. Содержание опирается на официальные материалы Microsoft, доступные на март 2026 года.12345

1. Сначала выводы

Сразу перечислим выводы.

  • VBA — это событийно-управляемый язык для расширения десктопных приложений Office. Технология рассчитана на работу внутри Excel, Word, PowerPoint, Access и подобных приложений.1
  • По меньшей мере на март 2026 года в официальных материалах Microsoft нет явного заявления, что «сам VBA в ближайшее время снимут». Сейчас происходит не столько «внезапная полная отмена», сколько изменение, при котором проясняется, где и при каких условиях VBA можно использовать.1234
  • Конкретно: в Excel for the web нельзя создавать, выполнять и править VBA. Кроме того, макросы в файлах из интернета по умолчанию блокируются.23
  • Поэтому сегодняшний вопрос — не «отказаться ли от VBA целиком», а какие области оставить в VBA, а какие вынести наружу.
  • В особенности обработку, которой нужны запуск без участия пользователя, серверное выполнение, многопользовательская эксплуатация, работа в браузере, централизованная раздача или строгий аудит, естественно не держать целиком на VBA. Microsoft также не рекомендует и не поддерживает серверную автоматизацию Office.6
  • Направление замены не одно. Реалистичное разделение такое: если Excel остаётся, вынести обработку в DLL на .NET или в отдельный процесс; для бизнес-процессов в Microsoft 365 — Office Scripts + Power Automate; для кросс-платформенных расширений — Office Add-ins; а если Excel уже фактически перестал быть интерфейсом — вынести в Windows-приложение или веб-приложение.456

Иными словами, на практике VBA разумнее рассматривать не как «технологию, которая вот-вот умрёт», а как «технологию с ясно очерченной областью применения».

Как читать текущие измененияПроисходит не внезапная полная отмена, а прояснение мест и условий использования. Вопрос не в том, отказаться ли от VBA целиком, а в том, какие области оставить в VBA, а какие вынести наружу.Внезапная полная отменаВ официальных материалах не подтверждаетсяПрояснение мест и условий использованияМеняется сам вопросКакие области оставить в VBAКакие области вынести наружу

Рис. 2: Вопрос не «отказаться ли от всего», а как разделить области, которые остаются, и области, которые выносят.

Карта знаний этой статьи

VBA — событийный язык, который работает внутри классических приложений Office: в Excel for the web его нельзя ни создать, ни выполнить, ни править, а макросы в файлах из интернета по умолчанию блокируются. Эту блокировку можно точечно обойти механизмами вроде надежных расположений, надежных сайтов, надежных издателей и сертификата подписи кода. VBA не подходит для автоматизации Office на стороне сервера: Microsoft для безлюдной генерации бланков рекомендует прямую генерацию в формате Open XML. Старые операторы Declare на 64-битном Office иногда не работают, а запуск внешних .vbs и зависимость от VBScript.RegExp могут попасть под поэтапный отказ от VBScript. Замена не одна: тяжёлую бизнес-логику относят в .NET DLL, кроссплатформенные расширения — в Office Add-ins, рабочие процессы на M365 — в Office Scripts и Power Automate; реалистично делить по зонам ответственности.

Карта знаний ограничений VBA и вариантов заменыСхема, которая показывает, что VBA — язык расширений, замкнутый внутри классического Office; несовместимость с Excel for the web; блокировку макросов по умолчанию и обход через надежные расположения, надежные сайты и надежных издателей; нерекомендуемость автоматизации на стороне сервера и альтернативу Open XML; ограничения вроде разрядности и зависимости от VBScript; и направления замены по зонам ответственности — Office Scripts, Office Add-ins и .NETнесовместимо спредотвращаетможет вызватьнастраиваетсянастраиваетсянастраиваетсятребуетне рекомендуетсярекомендуется дляне рекомендуетсятребуеттребуетиспользуетиспользуетиспользуетнесовместимо срекомендуется дляне рекомендуетсярекомендуется дляиспользуеттребуетнесовместимо срекомендуется дляVBA (Visual Basic for Applications)Excel for the webблокировка интернет-макросов по умолчаниюZone.Identifier (Mark of the Web)надёжные расположения (Trusted Location)зона «Надёжные узлы» / «Местная интрасеть»хранилище «Доверенные издатели»сертификат подписи кодасерверная автоматизация Officeформат Open XMLгенерация отчётов без операторатребование совпадения разрядностиподдержка 64-bit в VBA (PtrSafe/LongPtr)COM (Component Object Model)ActiveXOCXкроссплатформенное расширение OfficeOffice Add-insоблачный поток на Microsoft 365Office ScriptsPower Automateзависимость от VBScript.RegExp и внешних .vbsпоэтапный вывод VBScript.NET (начиная с Core)

На схеме сплошная линия обозначает отношение, которое выполняется всегда, а пунктирная — условное отношение (условия указаны в пояснении к каждому отношению на странице сведений). Полный список отношений (всего 23, с доказательствами и степенью уверенности) и определения основных понятий собраны на странице сведений карты знаний (на японском). Данные: JSON-LD / Turtle

2. Что такое VBA

VBA — это сокращение от Visual Basic for Applications, разновидность Visual Basic, входящая в Microsoft Office. В официальной документации Microsoft его описывают как событийно-управляемый язык программирования для расширения приложений Office.17

Важно вот что: VBA ближе к реальности рассматривать не как универсальную платформу разработки приложений, а как язык расширения, который встраивают внутрь приложений Office.

Как правильно смотреть на VBAVBA ближе к реальности рассматривать не как универсальную платформу разработки, а как событийно-управляемый язык расширения, который встраивают внутрь приложений Office.Далеко от практикиБлиже к практикеVBAКак смотретьУниверсальная платформа разработкиЯзык расширения внутри приложений OfficeСобытийно-управляемый язык внутри Office

Рис. 3: VBA — не универсальная платформа, а язык расширения внутри Office.

В Excel, например, он работает рядом с такими объектами:

  • Workbook
  • Worksheet
  • Range
  • кнопки и формы
  • события при открытии книги, сохранении, изменении ячейки

То есть сила VBA в том, что он очень близко сидит к экранам, отчётам и структуре книг Excel и Access. Пользователь открывает десктопный Office, нажимает кнопку, обрабатывает данные из локальных файлов или общей папки и сразу получает отчёт. Для такой «автоматизации, которая целиком заканчивается на машине пользователя» у VBA и сейчас есть реальные преимущества.1

На практике код может быть таким коротким. Это минимальный вариант: его назначают кнопке на листе.

' Стандартный модуль Excel. Предполагается вызов с кнопки на листе
Option Explicit

Public Sub ClearMeisai()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Детали")

    If MsgBox("Будут очищены строки со 2-й и ниже на листе «Детали». Продолжить?", _
              vbOKCancel + vbQuestion, "Подтверждение") <> vbOK Then
        Exit Sub
    End If

    ws.Rows("2:" & ws.Rows.Count).ClearContents
End Sub

На лист ставят фигуру или кнопку элемента управления формы, через «Назначить макрос» в контекстном меню выбирают этот ClearMeisai — и при каждом нажатии выполняется эта процедура. Здесь важно увидеть, что объекты Excel вроде ThisWorkbook, Worksheets, Rows появляются как есть, без преобразования и без вызова API. «Язык, который работает внутри Office» на практике и есть эта близость. На замене, где этой близости нет, тем же числом шагов такой код не напишешь.

И наоборот, изначальная область VBA никогда не включала серверы, браузеры, мобильные устройства и многоарендаторные веб-системы.

Область применения VBAVBA близок к экранам, отчётам и структуре книг Excel и Access и до сих пор силён в автоматизации на машине пользователя, но серверы, браузеры, мобильные устройства и многоарендаторные веб-системы изначально вне его области.Объекты Excel доступны напрямуюАвтоматизация на машине пользователяОбласть, где VBA силён и сейчасСервер / браузер / мобильные / веб-системаИзначально вне области применения

Рис. 4: Близость к Office — сила VBA; там, где эта близость не нужна, область применения заканчивается с самого начала.

3. Почему VBA до сих пор используют

VBA держится на местах не только потому, что «остался по инерции, раз уж старый».

Во-первых, в Excel и Access легко оказывается не просто данные, а сама рабочая процедура.

  • внешний вид отчётов
  • настройки печати
  • проверка ввода
  • порядок ежемесячной обработки
  • исключения по подразделениям
  • порядок действий, к которому на местах привыкли годами

При переносе в другую систему это не сводится к «переносу кода». Внешний вид, порядок действий, исключения и эксплуатация слиты воедино, поэтому VBA-наработки несут спецификацию большего объёма, чем кажется снаружи.

Что несут VBA-наработкиВ Excel и Access легко оказываются внешний вид отчётов, печать, проверка ввода, порядок обработки, исключения и привычный порядок действий. Внешний вид, операции, исключения и эксплуатация слиты, поэтому одним переносом кода миграция не заканчивается.Наработки Excel / AccessВ них сидит сама рабочая процедураВнешний вид отчётов и печатьПроверка ввода и порядок обработкиИсключения и порядок действийОдним переносом кода не обойтись

Рис. 5: VBA-наработки несут не только код, а рабочую процедуру и эксплуатацию целиком.

Кроме того, VBA близок к объектной модели Office, поэтому для сценария «управлять Excel прямо перед пользователем и вернуть результат» шагов мало. Эта близость важна и при выборе замены: одного переписывания на новую технологию часто недостаточно.

На практике естественно рассуждать так.

  • Если Excel останется интерфейсом, часть VBA имеет смысл сохранить
  • Если Excel нужен только как ввод-вывод, внутреннюю логику легко вынести наружу
  • Если сам Excel уже не выполняет роль настоящего UI, он становится кандидатом на переработку
Смотреть на роль Excel как UIЕсли Excel останется интерфейсом, часть VBA стоит сохранить; если Excel нужен только как ввод-вывод, логику легко вынести; если Excel уже не является настоящим UI, это кандидат на переработку.Остаётся UIТолько ввод-выводУже не настоящий UIКакова роль ExcelИмеет смысл оставить часть VBAЛогику легко вынести наружуКандидат на переработку

Рис. 6: От того, является ли Excel интерфейсом, зависят решения оставить, вынести или переписать.

4. Основные ограничения VBA

4.1 Рассчитан на десктоп

Это самое большое ограничение. VBA по сути работает внутри десктопной версии Office.

В официальных материалах Microsoft указано, что в Excel for the web нельзя создавать, выполнять и править VBA; книгу с макросами можно открыть и править, но выполнить VBA нельзя.28

Уже на этом этапе он плохо стыкуется с такими требованиями:

  • всё должно заканчиваться в браузере
  • одно и то же расширение должно работать на Mac / iPad / в вебе
  • администратор должен раздавать его централизованно
  • не хочется зависеть от локального десктопного Excel

Сама Microsoft в документации по VBA указывает, что для расширений под несколько платформ стоит смотреть на Office Add-ins.95

Ограничение «только десктоп»VBA работает внутри десктопного Office. В Excel for the web его нельзя создавать, выполнять и править, поэтому он плохо стыкуется с браузером и кросс-платформенными требованиями; для нескольких платформ указывают Office Add-ins.VBAРаботает внутри десктопного OfficeВ Excel for the web нельзя создавать, выполнять и правитьПлохо стыкуется с браузером и централизованной раздачейДля нескольких платформ смотреть Office Add-ins

Рис. 7: Самое большое ограничение — расчёт на десктоп.

4.2 Много трения в безопасности и распространении

Значительная часть ощущения «VBA больше нельзя использовать» на самом деле связана с усилением безопасности.

Microsoft по умолчанию блокирует макросы VBA в файлах из интернета. Вложение из письма или скачанный .xlsm уже не выполняется так просто, как раньше.3

С точки зрения безопасности это верное направление. Но со стороны эксплуатации растёт трение:

  • при раздаче вложением макрос не работает
  • шаблон, скачанный с внешнего сайта, не работает
  • поведение через OneDrive / SharePoint / сеть трудно объяснить
  • подсказка «включите макросы» становится слабым местом эксплуатации
Трение из-за блокировки макросов по умолчаниюМакросы VBA в файлах из интернета по умолчанию блокируются, поэтому вложения и скачанные файлы уже не выполняются как раньше, и трение при распространении и эксплуатации растёт.Файл из интернетаМакросы VBA блокируются по умолчаниюВложение или загрузка уже не работают простоРастёт трение при раздаче и эксплуатацииДля безопасности это верное направление

Рис. 8: Ощущение «больше нельзя использовать» во многом даёт блокировка макросов по умолчанию.

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

Способ Что делает Когда уместен
Снять Mark of the Web В свойствах файла включить «Разблокировать». То же делает PowerShell-командлет Unblock-File Разовый файл, небольшая группа
Надёжные расположения Файлы в указанной папке открываются без проверки Mark of the Web Регулярные отчёты, шаблоны, внутренняя раздача
Цифровая подпись + надёжные издатели Макрос подписывают сертификатом и разносят этот сертификат в «Надёжные издатели» у пользователей Постоянно раздаваемые внутренние макросы, макросы вендора
Зона надёжных узлов / местной интрасети Домен файлового сервера или SharePoint регистрируют в зоне Когда всё собрано в общей папке или на SharePoint

Одновременно прямо названы и ограничения.3

  • Надёжные расположения и надёжные узлы означают доверие ко всему, что туда положили. Место должно быть таким, где вы контролируете, кто может писать.
  • Надёжные издатели — это настройка Windows в целом, а не только Office.
  • Надстройки Excel (.xla / .xlam) не заработают, даже если подписать их и доверить издателя, пока на файле висит Mark of the Web. Нужно либо снять метку, либо положить файл в надёжное расположение.
  • Если сетевую папку открывают по IP-адресу, она может не попасть ни в надёжные узлы, ни в местную интрасеть и остаться заблокированной.

Иначе говоря, если VBA оставляете, отдельно от кода нужно спроектировать распространение: куда класть файлы и как им доверять. Раздавать .xlsm вложением в письма, не решив этого, — самый трущийся вариант.

То есть проблемы VBA возникают не только в «возможностях языка», но и в проектировании распространения и доверия.

Если VBA оставляете, нужно спроектировать и раздачуРешение оставить VBA требует отдельно от кода решить, куда класть файлы и как им доверять. Продолжать раздавать .xlsm вложением, не решив этого, даёт наибольшее трение.Решение оставить VBAРазговор про кодРазговор про раздачуКуда кластьКак доверятьРаздача .xlsm вложением без решения = наибольшее трение

Рис. 9: Если оставляете VBA, отдельно от кода спроектируйте место хранения и способ доверия.

4.3 Барьер 32-bit / 64-bit

Office бывает 32-bit и 64-bit, и в Office 2019 и Microsoft 365 по умолчанию стоит 64-bit.7

Из-за этого старый код VBA — особенно тот, что вызывает Windows API через Declare, — в 64-bit среде может не работать как есть. Microsoft рекомендует сглаживать разницу 32-bit / 64-bit через PtrSafe, LongPtr, LongLong и подобные средства.7

Болезненно здесь то, что вместе с кодом часто всплывают и такие зависимости:

  • старые COM / ActiveX / OCX
  • внешние DLL, рассчитанные на 32-bit
  • компоненты, которым нужна регистрация в реестре
  • расхождения в ссылках Office

То есть миграция VBA очень часто оказывается не столько переписыванием языка, сколько разбором разрядности Office и внешних зависимостей.

Барьер 32-bit / 64-bitВ Office 2019 и Microsoft 365 по умолчанию 64-bit, поэтому старые вызовы Windows API через Declare часто требуют PtrSafe и LongPtr. Вместе с этим всплывают старые COM и ActiveX, 32-bit DLL и расхождения ссылок, так что миграция больше про зависимости, чем про переписывание языка.Office 2019 / M365 по умолчанию 64-bitСтарые вызовы Declare могут не работать как естьРазницу сглаживают PtrSafe и LongPtrВместе всплывают COM / ActiveX / OCX и 32-bit DLLПо сути это разбор разрядности и внешних зависимостей

Рис. 10: При переходе на 64-bit чаще сначала ломаются внешние зависимости, а не сам код.

4.4 Плохо подходит для запуска без участия пользователя и для сервера

Этот пункт очень важен. Microsoft прямо заявляет, что не рекомендует и не поддерживает серверную автоматизацию приложений Office. Office рассчитан на интерактивный рабочий стол и профиль пользователя; в неинтерактивной среде возможны нестабильность и взаимные блокировки (deadlock).6

Поэтому такие схемы склонны к риску:

  • запуск Excel из службы Windows
  • автоматизация Office из ASP.NET или DCOM
  • бесконечная работа невидимого Excel под планировщиком заданий
  • полная перекладка генерации отчётов на Excel на сервере

Иногда это «работает». Но работать и быть поддерживаемой конфигурацией — разные вещи.

Если нужен запуск без участия пользователя, первым подозреваемым должен быть не VBA, а сама схема, которая гоняет приложение Excel.

Почему VBA плохо подходит для сервера и запуска без пользователяOffice рассчитан на интерактивный рабочий стол и профиль пользователя. Серверная автоматизация не рекомендуется и не поддерживается; в неинтерактивной среде возможны нестабильность и deadlock. Подозревать нужно не VBA, а схему, которая гоняет само приложение Excel.Схема, где Excel запускает служба или пакетное заданиеOffice рассчитан на интерактивный рабочий столВ неинтерактивной среде возможны нестабильность и deadlockСерверная автоматизация вне поддержкиПодозревать нужно схему запуска Excel, а не VBA

Рис. 11: «Иногда работает» и «эту схему можно поддерживать» — разные вещи; при запуске без пользователя сомневайтесь в самой схеме.

4.5 Легко проигрывает в сопровождении, тестировании и учёте изменений

Код VBA легко оказывается запертым внутри книг и файлов Access. Из-за этого легко возникают такие проблемы:

  • становится неясно, какой файл является эталоном
  • ответственность разбросана по формам, листам и стандартным модулям
  • ссылки и зависимости от ActiveX расходятся между средами
  • ревью кода и просмотр различий затруднены
  • сложно писать модульные тесты
  • адреса ячеек Excel сами превращаются в спецификацию

Это проблема не языка VBA как такового, а структуры «бизнес-логика лежит внутри файлов Office». Для небольшой автоматизации это может почти не мешать, но по мере превращения в полноценную бизнес-систему начинает сильно сказываться.

Проблема структуры «логика внутри файла Office»Код VBA легко запирается внутри книг и файлов Access: эталон становится неясным, ответственность разъезжается, различия и тесты делать трудно. В небольшой автоматизации это мало заметно, но при превращении в бизнес-систему резко проявляется.Код запирается внутри файла OfficeЭталон неясен, ответственность разъезжаетсяТрудно смотреть различия и писать тестыВ небольшой автоматизации мало заметноПри превращении в бизнес-систему резко проявляется

Рис. 12: Проблему создаёт не язык, а структура «бизнес-логика внутри файла».

4.6 Если есть зависимость от VBScript, нужна отдельная осторожность

В 2025 году в Microsoft 365 Developer Blog сообщили, что поэтапный вывод VBScript из эксплуатации в Windows может затронуть и проекты VBA. В зону влияния попадают в первую очередь случаи, когда выполняются внешние .vbs, и случаи зависимости от ссылки на VBScript.RegExp.10

При этом Microsoft также продвигается в другом направлении: начиная с Office для Windows версии Microsoft 365 2508 (сборка 19127.20154) класс RegExp включают в VBA по умолчанию.10

Повлияет ли это на ваши наработки, можно понять, поискав три вещи. Подойдёт и поиск в меню «Правка» редактора VBE, и grep по тексту, выгруженному в .bas / .cls.

Что искать Конкретная строка Что это значит, если нашлось
RegExp через позднюю привязку CreateObject("VBScript.RegExp") Есть зависимость от библиотеки VBScript
RegExp через раннюю привязку Ссылка «Microsoft VBScript Regular Expressions 5.5», в коде New RegExp То же. Видно и в списке ссылок
Запуск внешнего .vbs Места, где в Run / Exec объекта WScript.Shell передают .vbs, либо строки cscript / wscript Есть зависимость от самого узла VBScript

Список ссылок смотрят в VBE: меню «Сервис» → «Ссылки».

По RegExp, как сказано выше, начиная с Microsoft 365 Version 2508 (сборка 19127.20154) класс RegExp в Windows-версии Office включают в VBA по умолчанию.10 Тяжелее третья строка — «запуск внешнего .vbs»: саму обработку придётся переносить либо в VBA, либо на другую среду выполнения. Когда будете составлять реестр наработок (раздел 8.1), эти три пункта лучше сразу туда записать, чтобы не искать дважды.

Важно: вывод VBScript из эксплуатации и снятие VBA — это не одна история. Речь не о том, что исчезает сам VBA, а о том, что часть внешних зависимостей, которые висели на VBA, нужно пересмотреть.

Связь вывода VBScript и VBAПоэтапный вывод VBScript в Windows может затронуть запуск внешних .vbs и зависимость от VBScript.RegExp. Для RegExp в новом Office класс уже включают в VBA по умолчанию. Это не снятие VBA целиком.Поэтапный вывод VBScriptЗависимость от запуска внешних .vbsЗависимость от VBScript.RegExpСмотреть перенос на другую среду выполненияВ новом Office класс уже в VBA по умолчаниюЭто не снятие VBA целиком

Рис. 13: Затрагиваются только зависимости, висящие на VBScript, а не сам VBA.

5. VBA скоро перестанет работать?

Прежде всего, это не история «завтра всё перестанет работать». Но и не эпоха, когда «можно использовать где угодно и для чего угодно».

Если читать официальные материалы Microsoft, сейчас отчётливо видно такое направление.

  • VBA как средство расширения десктопного Office продолжает существовать1
  • на стороне веба / кросс-платформенных сценариев по обстоятельствам используют Office Scripts и Office Add-ins459
  • к безопасности распространения макросов относятся строже, чем раньше3
  • периферийные компоненты вроде зависимости от VBScript в будущем могут оказаться затронутыми10

Кроме того, Microsoft прямо пишет про Office Scripts: VBA ориентирован на десктоп, а Office Scripts — на безопасные кросс-платформенные облачные решения. И одновременно поясняет, что на данный момент охват функций Excel в десктопном клиенте у VBA шире.4

Если поставить эти два тезиса рядом, получается вполне практичная картина.

  • Для глубокой работы с десктопным Excel область VBA всё ещё шире
  • Для браузера / M365 / совместных рабочих процессов естественнее Office Scripts и Add-ins
  • Поэтому ответ — не «просто перевести всё на Office Scripts» и не «навсегда держать VBA в центре»

Будущее VBA естественнее рассматривать как прояснение границ, а не исчезновение.

Не исчезновение, а прояснение границВ глубокой работе с десктопным Excel область VBA всё ещё шире, а в браузере, M365 и совместных процессах естественнее Office Scripts и Add-ins. Это не сдвиг всего в одну сторону, а прояснение границ.Глубокая работа с десктопным ExcelБраузер / M365 / совместные процессыГде использоватьОбласть VBA всё ещё ширеЕстественнее Office Scripts и Add-insПрояснение границ

Рис. 14: Ни «всё в Office Scripts», ни «VBA навсегда в центре» — границы постепенно фиксируются.

6. Когда стоит заменить / когда заменять не нужно

Сначала грубая, но полезная таблица решений.

Ситуация Ориентир Почему
Пользователь открывает Excel / Access на своём ПК для небольшой автоматизации Оставить как есть или слегка привести в порядок Это как раз область VBA
Excel нужен только как UI и отчёты, но логика стала тяжёлой Перейти на гибридную модель VBA оставляют тонким, тяжёлую обработку выносят в .NET или отдельный процесс — так проще сопровождать
Нужна работа и в браузере, на Mac, на iPad Не строить всё вокруг VBA VBA рассчитан на десктоп, Office Add-ins кросс-платформенны5
Книгами на OneDrive / SharePoint нужно крутить рабочие процессы M365 Рассмотреть Office Scripts + Power Automate Office Scripts рассчитан на кросс-платформенную / облачную автоматизацию411
Нужен запуск без участия пользователя в ночном задании, на сервере, в службе Отказаться от автоматизации Excel Microsoft не рекомендует и не поддерживает серверную автоматизацию Office6
В центре сложные бизнес-процессы, права, аудит, связь с БД Рассмотреть приложение / систему Логика внутри файлов Office быстро упирается в потолок

Гибридная модель во второй строке в этой статье означает: оставить Excel / Access входом для UI и отчётов, а бизнес-логику и ввод-вывод вынести во внешнюю единицу выполнения. От полной замены это отличается тем, что экран и порядок действий, которые видит пользователь, не меняют. Конкретную форму разберём в 7.1.

Важно в этой таблице: ось решения — не «VBA устарел». Смотреть нужно на среду выполнения, эксплуатацию, распространение, зависимости, аудит и расширяемость.

Оси решения о заменеОсь решения — не «VBA устарел», а среда выполнения, эксплуатация, распространение, зависимости, аудит и расширяемость. В гибридной модели экран и порядок действий пользователя не меняют, наружу выносят только логику и ввод-вывод.VBA устарелНе ось решенияНа что смотретьСреда выполнения, эксплуатация, распространениеЗависимости, аудит, расширяемостьОставить / гибрид / вынести

Рис. 15: Ось решения — не старость, а среда выполнения, эксплуатация, распространение, зависимости, аудит и расширяемость.

7. Реалистичные направления замены

Прежде чем переходить к деталям, соберём кандидатов на одну таблицу. После таблицы в главе 6, где вы решили, «куда клонить», этой таблицей проверяйте, чего требует выбранное направление.

Кандидат Где выполняется Язык Предпосылки и лицензии Для чего подходит Подробности
Оставить VBA Внутри десктопного Office VBA Десктопный Office Автоматизация, где Excel / Access и есть UI Главы 2 и 3
Вынести в DLL на .NET или отдельный процесс ПК пользователя. Вызов из Excel или отдельный процесс C# и др. Среда выполнения .NET. Если публиковать как COM — ещё и схема регистрации Тяжёлая бизнес-логика, HTTP, криптография, CSV / JSON 7.1
Прямая генерация через Open XML и аналоги Среда сервера или пакетного задания C# / Python и др. Установка Office не нужна Массовая генерация отчётов без участия пользователя 7.2
Office Scripts + Power Automate Облако Microsoft 365 TypeScript Бизнес- или образовательная лицензия M365 и OneDrive for Business Рабочие процессы вокруг книг на OneDrive / SharePoint 7.3
Office Add-ins Windows / Mac / iPad / браузер HTML / CSS / JavaScript Место размещения в вебе и схема распространения Кросс-платформенное расширение UI, централизованная раздача 7.4
Windows- / веб-приложение Собственное приложение C# и др. Команда разработки и эксплуатации Области, где в центре права, аудит, БД 7.5

Чаще всего пропускают столбец «предпосылки и лицензии». У Office Scripts условия особенно чёткие, поэтому их отдельно разберём в 7.3.

7.1 Оставить Excel, а содержимое вынести в .NET или отдельный процесс

Самый реалистичный и наименее рискованный вариант — именно этот.

  • Входом для экранов и отчётов остаются Excel / Access
  • Кнопки и формы ввода пока тоже остаются как есть
  • Но бизнес-логику, HTTP, криптографию, CSV / JSON, тяжёлые вычисления и работу с файлами выносят наружу
  • VBA сужают до «моста» и «управления UI»

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

Гибрид: Excel остаётся, содержимое выносятВход для экранов и отчётов оставляют в Excel или Access, бизнес-логику, HTTP, криптографию, тяжёлые вычисления и файлы выносят в .NET или отдельный процесс, а VBA сужают до моста и UI. Внешний вид и порядок действий пользователя не ломают.Вход экранов и отчётов остаётся Excel / AccessVBA сужают до моста и UIТяжёлую логику и ввод-вывод — в .NET или отдельный процессВнешний вид и порядок действий пользователя не ломают

Рис. 16: Меньше всего ломается схема, где вход оставляют, а содержимое выносят.

Смежная статья:

Подход «прежде чем всё переписывать, сначала вынести только тяжёлые части» весьма практичен.

7.2 Для запуска без пользователя и генерации отчётов — прямая сборка файлов, а не автоматизация приложения Office

Если отчёты Excel нужно массово собирать ночным заданием или службой, первым подозреваемым должен быть не вопрос «не устарел ли VBA», а сам факт запуска приложения Excel.

Microsoft не рекомендует серверную автоматизацию Office. Вместо этого она рекомендует работать с файлами Office напрямую, используя такие форматы, как Open XML.6

То есть если требования выглядят так:

  • нужно создавать .xlsx
  • нужно массово выпускать типовые отчёты
  • нужно конвертировать в PDF
  • нужно выполнять в ночном пакетном задании

то выбирать следует не по оси «гонять ли Excel», а по оси «собирать ли файл Excel».

Генерацию отчётов без пользователя вести прямой сборкой файлаЕсли отчёты нужно массово собирать ночным заданием или службой, подозревать нужно сам запуск приложения Excel. Серверная автоматизация Office не рекомендуется; рекомендуется собирать файлы напрямую, например в формате Open XML.Не рекомендуетсяРекомендуемое направлениеНужна массовая генерация отчётов без пользователяПо какой оси думатьГонять приложение ExcelСобирать файл напрямую через Open XML и аналоги

Рис. 17: При запуске без пользователя выбирают не «гонять Excel», а «собирать файл».

Смежная статья:

7.3 Для бизнес-процессов в Microsoft 365 — Office Scripts + Power Automate

Если работа уже опирается на OneDrive / SharePoint / Teams / Outlook / Forms, Office Scripts — серьёзный кандидат.

Microsoft описывает Office Scripts как решение для безопасных кросс-платформенных облачных сценариев. В связке с Power Automate обработку Excel можно автоматизировать, используя как триггер письма, формы или расписание.411

Но сначала нужно проверить условия использования. Это предпосылки стоимости и среды, они обязательно всплывут позже.1213

Предпосылка Содержание
Лицензия Нужна одна из: Office 365 Business / Business Premium / ProPlus / A3 / A5 / Enterprise E1 / E3 / E5 / F3. В личных и семейных подписках это preview
Клиент Excel on the web, Excel for Windows версии 2210 или новее, либо Excel for Mac
Место хранения Нужен OneDrive for Business. Скрипты лежат как файлы .osts в /Documents/Office Scripts/ на OneDrive; их можно перенести на SharePoint
Общий доступ Должна быть включена ссылка общего доступа для «пользователей организации»
Сеть Нужны подключение к интернету и включённый интерфейс подключения (connected experience)
Использование из Power Automate Нужна бизнес-лицензия Microsoft 365. Enterprise E1 и F3 можно использовать через Power Automate, но прямую связку Power Automate изнутри Excel — нельзя
Вне поддержки Облака для госорганов уровня GCC High и выше не поддерживаются

То есть Office Scripts — не «бесплатная замена VBA, которая прилагается сама». По сравнению с раздачей локальных .xlsm появляются предпосылки OneDrive / SharePoint и лицензии M365. Если решить «переходим на Office Scripts», не проверив это, посреди миграции придётся вернуться к закупке лицензий.

Что проверить до перехода на Office ScriptsOffice Scripts — не бесплатная замена VBA. По сравнению с раздачей локальных .xlsm появляются OneDrive, SharePoint и лицензия M365. Если это пропустить, посреди миграции придётся вернуться к закупке лицензий.Проверить заранееЕсли пропуститьРаздача локальных .xlsmРассматривают переход на Office ScriptsПоявляются OneDrive / SharePoint и лицензия M365Вшить предпосылки в план миграцииПосреди пути вернуться к закупке лицензий

Рис. 18: Office Scripts — не «бесплатная замена VBA»; сначала проверяют предпосылки.

И по функциям это не универсальное решение.

  • Office Scripts не поддерживает события уровня Excel
  • Запуск в основном ручной либо вызов из Power Automate4
  • Для связки с Power Automate нужна бизнес-лицензия Microsoft 36511
  • У действия Run script есть ограничения вроде 1600 вызовов на пользователя в день и 120 секунд на синхронную обработку12

То есть Office Scripts точнее рассматривать не как «замену VBA», а как компонент автоматизации в M365.

Как запускают Office ScriptsOffice Scripts не поддерживает события уровня Excel. Запуск в основном ручной или из Power Automate, плюс есть лимиты по числу вызовов и времени синхронной обработки. Это компонент автоматизации M365, а не замена VBA.Office ScriptsЗапускают вручнуюВызывают из Power AutomateСобытия уровня Excel не поддерживаютсяСмотреть как компонент автоматизации M365

Рис. 19: Модель запуска другая, чем у событийного VBA; это компонент автоматизации в M365.

7.4 Если нужно кросс-платформенное расширение — Office Add-ins

Если нужно расширить Word, Excel, Outlook и подобные приложения на Windows / Mac / iPad / в браузере, первый кандидат — Office Add-ins.

В официальной документации Microsoft указано, что Office Add-ins строят на HTML / CSS / JavaScript, они работают на нескольких платформах и подходят для централизованной раздачи.5

Это подходит, например, для таких требований:

  • связать Office с внутренним порталом или основной системой
  • показать один и тот же UI и команды в Outlook / Excel / Word
  • раздавать централизованно, а не раскладывать макросы по компьютерам пользователей
  • уйти от модели раздачи локальных .xlsm

Это другая модель, чем VBA, поэтому ощущается совсем не так, как написание кода внутри Excel. Взамен эксплуатацию и распространение становится гораздо легче держать в порядке.

Когда уместны Office Add-insOffice Add-ins строят на HTML, CSS и JavaScript. Они работают на Windows, Mac, iPad и в браузере и подходят для централизованной раздачи, поэтому стыкуются с отказом от раздачи макросов по ПК и от локальных .xlsm.Строят на HTML / CSS / JavaScriptРаботают на Windows / Mac / iPad / в браузереЦентрализованная раздача администраторомУход от модели раздачи локальных .xlsm

Рис. 20: Если нужны кросс-платформенность и централизованная раздача, это уже модель Add-ins.

7.5 Если Excel / Access уже перестал быть настоящим UI — вынести в Windows-приложение или веб-приложение

Если дошло до такого состояния, продлевать жизнь VBA менее естественно, чем пересобрать всё как приложение.

  • переходов между экранами и управления правами стало слишком много
  • в центре БД, журналы аудита, согласования, управление пользователями
  • есть связь с внешним оборудованием или длительная обработка
  • ячейки и формы Excel стали заменять собой спецификацию бизнес-процесса
  • само по себе исчезновение состояния при закрытии книги стало болезненным

В этом случае для инструмента под Windows естественнее структура десктопного приложения на C# / .NET, а если круг пользователей или устройств широк — веб-приложения.

8. Как проводить поэтапную миграцию

Самое опасное при замене VBA — сразу сводить всё к одной новой технологии. На практике безопаснее идти в порядке, изложенном ниже.

8.1 Сначала составить реестр наработок

В первую очередь выявляйте не объём кода, а зависимости.

  • какие есть .xlsm / .xlam / .accdb / .mdb
  • какие из них являются входом в реальную эксплуатацию
  • что указано в ссылках
  • какие есть Declare, внешние DLL, COM / ActiveX / OCX
  • каковы предположения о 32-bit / 64-bit
  • какие макросы кем и в каком порядке используются
  • что является результатом (Excel, CSV, PDF, печать, отправка почты и т. д.)

Если заменить, оставив это неясным, позже случаются инциденты вроде «макрос, которым, как считалось, никто не пользуется, оказался живым только в конце месяца».

Что выписывают в реестрНа старте поэтапной миграции важнее зависимости, чем объём кода: какие файлы являются входом, какие ссылки, DLL и разрядность, кто каким макросом пользуется и что он выдаёт. Если оставить это неясным, всплывают макросы, которые живут только в конце месяца.Опись файловОпись зависимостей (ссылки, DLL, разрядность)Опись использования (кто, в каком порядке, какой выход)Иначе инцидент с макросом, который жив только в конце месяца

Рис. 21: В реестре смотрят не объём кода, а зависимости и способ использования.

8.2 Разделить код по зонам ответственности

Следующий шаг — делить не по файлам, а по зонам ответственности.

  • работа с UI Excel / Access
  • ввод-вывод листов
  • макет отчётов
  • бизнес-правила
  • ввод-вывод через внешние API / файлы / БД
  • пакетная обработка
  • печать / распространение

При таком разделении становится легче увидеть, что оставить, что облегчить, а что вынести наружу.

8.3 Определить направление миграции для каждой зоны ответственности

Разделение, которое легко рекомендовать, выглядит так.

  • UI и работа с листами: пока оставить в VBA
  • Бизнес-логика: вынести в DLL на .NET, отдельный процесс или службу
  • Генерация отчётов без участия пользователя: перевести на Open XML или прямую сборку
  • Рабочие процессы M365: Office Scripts + Power Automate
  • Кросс-платформенный UI: Office Add-ins
  • Области, которые уже стали бизнес-системой: выделить в Windows- / веб-приложение

Важно не сводить направление миграции к одному варианту. Содержимое VBA-наработок почти всегда — смесь нескольких зон ответственности.

Направление миграции выбирают по зоне ответственностиЕсли делить код не по файлам, а по зонам ответственности, становится видно, что оставить, что облегчить и что вынести. UI и листы пока оставляют в VBA, бизнес-логику — в .NET, генерацию отчётов без пользователя — в Open XML, процессы M365 — в Office Scripts.Делят код по зонам ответственностиВидно, что оставить / облегчить / вынестиUI и работу с листами пока оставляют в VBAБизнес-логику — в .NET или отдельный процессГенерацию отчётов без пользователя — в Open XMLРабочие процессы M365 — в Office Scripts

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

8.4 Сначала зафиксировать интерфейсы

Перед началом миграции стоит как минимум решить следующее.

  • что является входом
  • что является выходом
  • как сообщается об ошибке
  • какие листы, именованные диапазоны, пути к файлам образуют контракт
  • в какой момент результат считается окончательным

Если идти, не решив этого, сами адреса ячеек превращаются в API, и всё легко ломается.

8.5 Сравнивать при параллельной эксплуатации

Особенно для отчётов и сводок безопаснее не переключаться сразу.

  • выдавать результат старой версии на VBA и новой реализации параллельно
  • сравнивать полученные .xlsx / CSV / PDF
  • проверять расхождения в датах, округлении, форматах, областях печати
  • также прогонять исключительные ситуации и пустые данные

Инциденты при замене VBA чаще всего проявляются не как «работает или нет», а как тихое расхождение чисел и форматов.

Сначала сравнить при параллельной работе, потом переключатьсяОтчёты и сводки не переключают сразу: старую VBA-версию и новую реализацию выдают параллельно, сравнивают даты, округление, форматы и области печати, прогоняют исключения и пустые данные. Так ловят тихое расхождение чисел и форматов.Старую VBA-версию и новую реализацию выдают параллельноСравнивают выход (даты, округление, форматы, области печати)Прогоняют исключения и пустые данныеПереключаются, убедившись, что расхождений нетИнциденты приходят как тихое расхождение чисел и форматов

Рис. 23: Не переключаться сразу: сначала параллельно сравнить старый и новый выход.

9. Частые ошибки

9.1 Начинать с «VBA устарел, значит всё в Office Scripts»

Office Scripts — сильный вариант, но сама Microsoft поясняет, что у VBA шире охват функций десктопного Excel. Более того, Office Scripts не поддерживает события уровня Excel.4

Поэтому идея прямого переноса макросов с глубокой зависимостью от десктопного Excel «как есть» рискованна.

9.2 Продолжать запускать сам Excel при выполнении без участия пользователя

Это встречается очень часто. Пока это работает, выглядит удобно, но Microsoft не рекомендует серверную автоматизацию Office.6

Для ночных пакетных заданий и служб безопаснее склоняться к сборке файлов Excel, а не к управлению Excel.

9.3 Менять экраны, отчёты и бизнес-правила все сразу

По-настоящему пугает при замене VBA не сама конвертация кода, а потеря части спецификации бизнес-процесса. В листах Excel и формах Access сидит немало правил эксплуатации, которые нигде не записаны в коде.

Если менять всё сразу, легко получить инцидент вроде «выглядит похоже, но отличается только в конце месяца».

Что бывает, если менять всё сразуСтрашнее конвертации кода — потеря спецификации. В листах Excel и формах Access сидят незаписанные правила эксплуатации. Если сразу менять экраны, отчёты и бизнес-правила, получается «похоже, но отличается только в конце месяца».Экраны, отчёты и бизнес-правила меняют все сразуТеряют правила эксплуатации, которых нет в кодеИнцидент «похоже, но отличается только в конце месяца»Страшнее конвертации кода — потеря спецификации

Рис. 24: Если менять всё сразу, легко потерять бизнес-спецификацию, которой нет в коде.

9.4 Откладывать вопросы 32-bit / 64-bit и внешних ссылок на потом

В проектах миграции первым обычно взрывается не сам код VBA, а:

  • Declare
  • внешние DLL
  • COM / ActiveX / OCX
  • разрядность Office
  • ссылки

Если отодвинуть это на потом, в финальной фазе реализации становится резко тяжело.7

9.5 Путать историю VBScript и историю VBA

С точки зрения VBA поэтапный вывод VBScript из эксплуатации — это вопрос пересмотра части зависимостей. Это не означает завершения работы VBA в целом.10

Если это смешать, легко начинает жить своей жизнью небрежный внутренний слух вроде «похоже, VBA заканчивается».

10. Итог

Одной фразой VBA можно описать как язык расширения, тесно привязанный к десктопным приложениям Office. Для автоматизации работы прямо на месте пользователя, рядом с Excel и Access, он и сегодня остаётся весьма практичным.1

Но в дальнейшей практике важно не рассматривать VBA как универсальную центральную технологию.

  • Если нужен браузер / кросс-платформенность, стоит смотреть на Office Scripts и Office Add-ins45
  • Для обработки без участия пользователя / на сервере стоит избегать автоматизации Office6
  • Тяжёлую логику и внешние интеграции нужно выносить в .NET или отдельный процесс
  • Если Excel / Access уже с трудом справляется с ролью интерфейса, стоит выносить в Windows- или веб-приложение

Ответ — не «заменить всё» и не «не менять ничего», а «разделить по зонам ответственности и постепенно облегчать».

Ответ на замену VBAОтвет — не заменить всё и не оставить всё как есть, а разделить по зонам ответственности и постепенно облегчать. Замену безопаснее вести как упорядочивание, а не как перевод.КрайностьКрайностьПрактичный ответЧто делать с VBA-наработкамиЗаменить всёНичего не менятьРазделить по зонам ответственности и постепенно облегчатьВести как упорядочивание, а не как перевод

Рис. 25: Ответ не на краях, а в разделении по зонам ответственности и постепенном облегчении.

При беглом взгляде VBA-наработки выглядят устаревшими. Но на практике в них плотно упакованы спецификация бизнес-процесса, порядок эксплуатации, дизайн отчётов и наработанные привычки на местах.

Именно поэтому замену безопаснее вести не как перевод, а как упорядочивание.

11. Смежные статьи

12. Источники

  1. Microsoft Learn, Office VBA Reference. «Office Visual Basic for Applications (VBA) is an event-driven programming language that enables you to extend Office applications.»  2 3 4 5 6 7

  2. Microsoft Support, Work with VBA macros in Excel for the web. В Excel for the web нельзя создавать, выполнять и править VBA.  2 3 4

  3. Microsoft Learn, Macros from the internet are blocked by default in Office. Макросы VBA в файлах из интернета по умолчанию блокируются.  2 3 4 5 6 7

  4. Microsoft Learn, Differences between Office Scripts and VBA macros. VBA ориентирован на десктоп, Office Scripts предназначен для безопасных кросс-платформенных облачных решений; на данный момент охват функций десктопного Excel у VBA шире.  2 3 4 5 6 7 8 9 10

  5. Microsoft Learn, Office Add-ins platform overview. Office Add-ins построены на HTML / CSS / JavaScript, работают на Windows, Mac, iPad и в браузере, подходят для централизованной раздачи.  2 3 4 5 6 7

  6. Microsoft Support, Considerations for server-side Automation of Office. Microsoft не рекомендует и не поддерживает серверную автоматизацию Office и предлагает альтернативы вроде Open XML.  2 3 4 5 6 7

  7. Microsoft Learn, 64-bit Visual Basic for Applications overview. В Office 2019 / Microsoft 365 по умолчанию используется 64-bit, и могут потребоваться такие меры, как PtrSafe, LongPtr 2 3 4

  8. Microsoft Learn, Office for the web service description. В Excel for the web нельзя создавать и выполнять макросы VBA, но книги, содержащие VBA, можно редактировать. 

  9. Microsoft Learn, Visual Basic for Applications (VBA) language reference. Читателей, создающих расширения для нескольких платформ, направляют к Office Add-ins.  2

  10. Microsoft 365 Developer Blog, Prepare your VBA projects for VBScript deprecation in Windows. О влиянии поэтапного вывода VBScript из эксплуатации на проекты VBA, выполняющие .vbs или зависящие от VBScript.RegExp, и о поддержке RegExp начиная с версии Office 2508.  2 3 4 5

  11. Microsoft Learn, Run Office Scripts with Power Automate. Об автоматизации, сочетающей Power Automate и Office Scripts, и о необходимом лицензировании.  2 3

  12. Microsoft Learn, Platform limits, requirements, and error messages for Office Scripts. О целевых клиентах, OneDrive for Business, необходимых лицензиях Microsoft 365, числе вызовов и тайм-аутах при связке с Power Automate.  2

  13. Microsoft Learn, Office Scripts file storage and ownership. Скрипты сохраняются как .osts в /Documents/Office Scripts/ на OneDrive; их можно перенести на SharePoint. 

Недавние статьи с теми же тегами помогут подробнее изучить близкие темы.

Эти страницы показывают тему статьи в более широком контексте услуг и решений.

Статья напрямую связана со следующими услугами.

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

Вопросы, которые часто возникают при консультациях по теме статьи.

VBA скоро перестанет работать?
По меньшей мере на март 2026 года в официальных материалах Microsoft нет явного заявления, что «сам VBA в ближайшее время снимут». Сейчас происходит не внезапная полная отмена, а прояснение, где и при каких условиях VBA можно использовать. Конкретно: в Excel for the web нельзя создавать, выполнять и править VBA, а макросы в файлах из интернета по умолчанию блокируются. Будущее VBA естественнее рассматривать как прояснение границ, а не как исчезновение.
Стоит ли перенести весь VBA на Office Scripts?
Не рекомендуем. Сама Microsoft пишет, что на данный момент охват функций Excel в десктопном клиенте у VBA шире, а Office Scripts не поддерживает события уровня Excel. Office Scripts точнее считать не заменой VBA, а компонентом автоматизации в Microsoft 365: книги на OneDrive или SharePoint плюс Power Automate. Направление миграции реалистичнее выбирать отдельно для каждой зоны ответственности.
Можно ли без участия пользователя гонять макросы Excel на сервере или в ночном пакетном задании?
Это рискованно. Microsoft прямо заявляет, что не рекомендует и не поддерживает серверную автоматизацию приложений Office. Office рассчитан на интерактивный рабочий стол и профиль пользователя; в неинтерактивной среде возможны нестабильность и взаимные блокировки (deadlock). Если нужна массовая генерация отчётов, рекомендуется не запускать приложение Excel, а собирать файлы Excel напрямую, например в формате Open XML.
Как мигрировать существующие VBA-наработки?
Безопаснее не сводить всё сразу к одной новой технологии, а идти поэтапно. Сначала составьте реестр: .xlsm, ссылки, внешние DLL, предположения о 32-bit/64-bit. Затем разделите код по зонам ответственности: UI, бизнес-логика, отчёты, ввод-вывод. После этого UI и работу с листами пока оставьте в VBA, бизнес-логику вынесите в DLL на .NET или в отдельный процесс, генерацию отчётов без участия пользователя — в Open XML, рабочие процессы M365 — в Office Scripts. Для отчётов и сводок старую и новую версии гоняйте параллельно и сравнивайте результат, прежде чем переключаться.

Об авторе

Страница с профилем автора статьи.

Го Комура

Представитель KomuraSoft LLC

Специализируется на разработке программного обеспечения для Windows, техническом консалтинге и расследовании сбоев, особенно в проектах с унаследованными системами и трудно воспроизводимыми ошибками.

Публичные ссылки

Вернуться в блог