Перенос макросов Excel VBA на Power Automate — что можно заменить Office Scripts, а что оставить как VBA
· Го Комура · Power Automate, VBA, Excel, Office, Office Scripts, Автоматизация бизнес-процессов, Облачный поток, Использование существующих активов, Миграция, Техническая консультация
«Этот процесс держится на макросе Excel, но человек, который его написал, уже не работает у нас. Можно ли перенести это на Power Automate?» — с такими вопросами обращаются очень часто. Ежедневная агрегация данных и формирование отчётов на VBA до сих пор исправно работают во многих компаниях, а уход автора макроса или новости об отказе от VBScript заставляют многих ответственных сотрудников волноваться о будущем своих наработок на VBA.
Скажем сразу: «перенос VBA на Power Automate» — это, если точнее, сочетание сразу нескольких историй: часть VBA переписывается в Office Scripts и вызывается из Power Automate, часть заменяется коннектором, а часть остаётся на VBA как есть. Механизма, который запускал бы макрос VBA в облачном потоке в неизменном виде, не существует. В этой статье мы разберём, какая обработка куда может переехать, а что стоит оставить на VBA, опираясь на первичную документацию Microsoft Learn.
1. Сначала вывод
- Запустить макрос VBA напрямую из облачного потока Power Automate нельзя. Коннектор Excel Online (Business) умеет работать с файлами .xlsm, но не может выполнять макросы внутри них — выполняться оттуда могут только Office Scripts.1
- Office Scripts — не полноценная замена VBA. Это инструмент только для Excel: он не умеет управлять другими приложениями Office, реагировать на события, использовать UserForm, интегрироваться через COM/OLE и обращаться к локальным файлам.23
- Зато обработку, полностью укладывающуюся в рамки книги — форматирование, агрегацию, перенос данных, — стоит переводить в Office Scripts. В сочетании с Power Automate это даёт запуск по расписанию или по событию (входящее письмо, форма), то есть автоматизацию «работает без открытия Excel», которая на VBA была принципиально недостижима.2
- Для чего-то простого, вроде добавления или чтения строк таблицы, можно обойтись действиями коннектора Excel Online (Business) без единой строчки скрипта — важно лишь заранее проверить ограничения: обязательна таблица, по умолчанию не более 256 строк, файл до 25 МБ и т. д.4
- Для обработки, которая без VBA не обойдётся, есть вариант запускать существующий VBA как есть через действие Run Excel macro потока рабочего стола. Так можно автоматизировать запуск и сопутствующие шаги, вообще не переписывая VBA.5
- Для Office Scripts нужна коммерческая или образовательная лицензия Microsoft 365 плюс OneDrive for Business. VBA не требует дополнительной лицензии, поэтому это условие нужно прояснить ещё до решения о миграции.62
2. Как соотносятся VBA, Office Scripts и Power Automate
Сначала разберёмся с действующими лицами — похожих названий здесь много, и именно в этом источник путаницы.
flowchart TB
subgraph Cloud[Облачная часть]
CF[Power Automate<br/>облачный поток]
Conn[Коннектор<br/>Excel Online Business]
OS[Office Script<br/>управление Excel на TypeScript]
CF --> Conn
Conn -- Run script --> OS
Conn -- Добавление/получение/обновление строк --> Table[Таблица Excel]
end
subgraph Desktop[Часть рабочего стола]
DF[Power Automate<br/>поток рабочего стола]
VBA[Существующий макрос VBA]
DF -- Run Excel macro --> VBA
end
CF -- Вызов --> DF
OS -.-> Book[Книга на OneDrive / SharePoint]
VBA -.-> LocalBook[Книга на локальном диске / файловом сервере]
- Office Scripts — это функция скриптования, которая управляет Excel на TypeScript. Работает в Excel в вебе, Excel для Windows (версии 2210 и новее) и Excel для Mac, и может вызываться из облачного потока Power Automate. Принципиальное отличие от VBA в том, что VBA спроектирован для рабочего стола, а Office Scripts — для облака и кроссплатформенного использования.26
- Коннектор Excel Online (Business) управляет файлами Excel на OneDrive for Business или SharePoint из облачного потока. У него есть действия для операций со строками таблицы, а также действие «Выполнение скрипта» (Run script), которое запускает Office Script.7
- Поток рабочего стола (Power Automate for desktop) — это RPA-инструмент, управляющий приложениями Windows. В наборе действий для Excel есть действие, запускающее макрос VBA.5
Что умеет VBA, но не умеет Office Scripts
Это самый важный момент для решения о миграции. Ниже — сводка на основе статьи Microsoft Learn «Differences between Office Scripts and VBA macros».2
| Что умеет VBA | Как это выглядит в Office Scripts |
|---|---|
| Управление другими приложениями Office помимо Excel — Word, Outlook, Access | Невозможно. Office Scripts работает только с Excel и недоступен в других приложениях Office |
| Интеграция через COM/OLE с другими приложениями и внешними компонентами, вызовы Win32 API (Declare) | Невозможно. Скрипт имеет доступ только к книге, но не к самой машине |
| Событийная модель — Workbook_Open, Worksheet_Change и подобное | Невозможно. События уровня Excel не поддерживаются; запустить скрипт можно только вручную или вызовом из Power Automate |
| Собственные диалоги и экраны ввода на базе UserForm | Невозможно. Любой интерфейс за пределами самой книги (диалоги, панели задач) — это территория надстроек Office3 |
| Работа с файлами в локальных папках (открытие, сохранение, получение списка) | Невозможно. Всё, что выходит за пределы книги, нужно делать через коннектор Power Automate (OneDrive, SharePoint и т. п.) |
| Широкий набор функций Excel, включая специфичные для десктопной версии | Частично невозможно. VBA охватывает более широкий диапазон функций Excel; Office Scripts рассчитан примерно на сценарии Excel в вебе |
Отдельного внимания заслуживают вызовы внешних веб-служб. Сам Office Scripts поддерживает ограниченные внешние вызовы, но при запуске через Power Automate любой внешний вызов API (fetch) изнутри скрипта завершается ошибкой. Внешнюю интеграцию нужно закладывать не в скрипт, а в коннекторы или HTTP-действие самого потока.26 При этом универсальное HTTP-действие для вызова произвольного API относится к премиум-коннекторам, поэтому одной лицензии Microsoft 365 для него недостаточно.8 По возможности отдавайте предпочтение стандартному коннектору службы, с которой интегрируетесь, а если без вызова собственного API не обойтись — закладывайте дополнительные расходы на премиум-лицензию в решение о миграции.
Многие, глядя на этот список, наверняка подумают: «у нас практически весь макрос под это подпадает». Это справедливое ощущение — разросшийся за годы макрос VBA обычно и правда включает отправку писем через Outlook, обход папок и приём данных через UserForm. Но прежде чем сдаваться, попробуйте разложить процесс на части. Для макроса «собрать файлы из папки, привести книгу в порядок и отправить письмом» сбор файлов и отправка письма — как раз то, с чем хорошо справляются коннекторы Power Automate, а если перевести в Office Scripts только форматирование самой книги, перенести можно всё целиком — такой случай встречается чаще, чем можно подумать.
3. Таблица решений — пять вариантов под разные сценарии
Цель миграции не сводится к «превратить всё в Office Scripts». На практике имеет смысл рассматривать пять вариантов.
| Вариант | Подходит, когда | Условия и ограничения |
|---|---|---|
| (1) Оставить как VBA | Индивидуальная или небольшая командная работа. UserForm, события или интеграция с другими приложениями действительно необходимы, а кто-то готов вручную запускать макрос без проблем | Дополнительная лицензия не нужна.2 Но риск «завязанности на одного человека» и неучтённых макросов нужно снимать инвентаризацией |
| (2) Перевести в Office Scripts и запускать из облачного потока | Форматирование, агрегация, перенос данных — всё внутри книги. Нужен запуск по расписанию или по событию (письмо, форма). Книгу можно разместить на OneDrive / SharePoint | Нужна коммерческая или образовательная лицензия Microsoft 365.6 События, UserForm и подобное придётся перепроектировать |
| (3) Обрабатывать напрямую коннектором Excel Online (Business) | Простая обработка — только добавление, получение, обновление или удаление строк таблицы. Например, «дописывать ответы формы в Excel» | Диапазон должен быть оформлен как таблица. Ограничения: по умолчанию 256 строк, файл до 25 МБ и т. д.4 |
| (4) Запускать существующий VBA как есть из потока рабочего стола | Переписывать VBA возможности нет, но хочется автоматизировать хотя бы запуск и окружающие шаги (размещение файлов, уведомления). Книга лежит на внутреннем файловом сервере | Нужна машина Windows. Для запуска из облачного потока при работающем на переднем плане (attended) выполнении нужна лицензия Power Automate Premium у владельца подключения, при безучастном (unattended) — лицензия Process910 |
| (5) Переписать на .NET | Большие объёмы данных, сложная бизнес-логика, обязательные автотесты или контроль версий в Git, формирование отчётов как основная задача | Максимальные затраты на разработку, но лучшая долгосрочная поддерживаемость и производительность. Отчёты можно сделать независимыми от Excel через Open XML и подобные подходы |
Какой вариант выбрать, в целом определяет такая схема.
flowchart TD
Start[Выбрать один макрос VBA] --> Q1{Обработка полностью<br/>укладывается в рамки книги?}
Q1 -- Нет --> Q2{Можно ли заменить часть<br/>вне Excel коннектором?<br/>отправка писем, сбор файлов}
Q2 -- Можно --> Split[Разбить процесс:<br/>часть с Excel -> Office Script<br/>остальное -> коннекторы потока]
Q2 -- Нельзя<br/>UI других приложений / COM --> Q5{Есть ли ресурс<br/>переписать VBA?}
Q1 -- Да --> Q3{Можно ли разместить книгу<br/>на OneDrive/SharePoint?}
Q3 -- Можно --> Q4{Достаточно ли операций<br/>со строками таблицы?}
Q4 -- Достаточно --> C3[Обрабатывать напрямую<br/>коннектором Excel Online Business]
Q4 -- Есть форматирование/<br/>несколько листов/логика --> C2[Перевести в Office Script<br/>и запускать через Run script]
Q3 -- Нельзя<br/>только внутренний сервер --> C4[Запускать VBA как есть<br/>из потока рабочего стола]
Q5 -- Нет --> C4
Q5 -- Есть/нужны производительность или тесты --> C5[Переписать на .NET]
Split --> C2
Стоит отметить: вариант (4) — не «конечная точка» миграции, а поддержание жизни. Зависимость самого VBA от конкретного человека и отсутствие версионирования никуда не деваются. Тем не менее как временная мера он вполне практичен: сначала автоматизировать запуск, чтобы исключить ошибки ручного выполнения, а тем временем постепенно переносить содержимое VBA в Office Scripts или .NET.
4. Паттерны реализации — действие Run script и ограничения коннектора
Выполнение скрипта (Run script)
Чтобы запустить Office Script из облачного потока, используются два действия коннектора Excel Online (Business). Run script — для скриптов, хранящихся в OneDrive (место по умолчанию), а Run script from SharePoint library — для скриптов, сохранённых в библиотеке SharePoint команды.7
Типичная конфигурация выглядит так.
- Триггер: расписание (Recurrence), входящее письмо, отправка формы и т. п.
- Через коннектор OneDrive / SharePoint определяется целевая книга
- Run script запускает Office Script и получает возвращаемое значение
- Возвращаемое значение используется для уведомления в Teams или отправки письма
Скрипт может принимать параметры и возвращать значение, что позволяет передавать данные в обе стороны: например, «передать из потока ключ поиска, получить в ответ соответствующие данные из книги и превратить их в письмо уже на стороне потока». Отметим, что функция «запуск скрипта по расписанию», которая раньше была доступна прямо в Excel, сейчас временно отключена, и запуск по расписанию рекомендуется реализовывать именно как поток Power Automate.11
Ограничения нужно проверять заранее
Главная ловушка при переходе с VBA — ограничения, специфичные именно для облачного выполнения. Пороги, которых для настольного VBA фактически не существовало, здесь заданы вполне жёстко.
| Ограничение | Значение | Источник |
|---|---|---|
| Размер запроса/ответа Office Scripts за один вызов | До 5 МБ | 6 |
| Число ячеек в одном диапазоне (Range) | До 5 миллионов ячеек | 6 |
| Частота вызовов Run script | 1 600 вызовов на пользователя в день, не более 3 за 10 секунд | 64 |
| Тайм-аут синхронной обработки | 120 секунд | 6 |
| Размер параметров, передаваемых в Run script | До 30 000 000 байт (около 28,6 МБ) | 6 |
| Размер файла Excel, с которым работает коннектор | До 25 МБ | 4 |
| Размер одного запроса коннектора | До 5 МБ | 4 |
| Обращения к API коннектора | 100 раз за 60 секунд на одно подключение | 4 |
Если таблицей управляют напрямую через коннектор Excel Online (Business), проверьте дополнительно следующее.4
- Операции со строками рассчитаны на таблицу. Действия вроде «Добавление строки в таблицу» и «Получение строки» рассчитаны на указание таблицы (ListObject) и не могут работать с данными, просто записанными в диапазон ячеек. Лист времён VBA, где «данные записывались произвольно начиная примерно с ячейки A1», перед миграцией нужно превратить в таблицу.
- List rows present in a table по умолчанию возвращает не более 256 строк. Чтобы получить все строки, нужно включить пагинацию. Число возвращаемых столбцов тоже по умолчанию ограничено первыми 500.
- Запись может отражаться с задержкой до 30 секунд. Кроме того, после использования коннектором файл может быть заблокирован на срок до 6 минут.
- Одновременная запись из нескольких клиентов не поддерживается. Если поток пишет в книгу, оставленную открытой в десктопном Excel, это верный путь к конфликтам и рассогласованию данных.
- Поддерживаемые форматы — .xlsx и .xlsb (бинарная книга). .xlsm можно выбрать через файловый браузер только в действии Run script; в остальных действиях нужно указывать ID файла напрямую. Но, как уже говорилось, макросы VBA внутри такого файла выполняться не будут. Файл .xlsm с элементами ActiveX или элементами управления формы может вообще не работать с коннектором, поэтому его стоит проверить заранее.1
Если попытаться перевести в Office Scripts «как есть» макрос, который каждую ночь агрегирует сотни тысяч строк, вы сразу упрётесь в лимит 5 МБ и тайм-аут 120 секунд. Обработку такого масштаба разумнее сразу направлять на .NET (вариант 5).
Запуск VBA из потока рабочего стола
Если решено оставить VBA как есть, книгу открывают действием Launch Excel потока рабочего стола, а затем запускают макрос действием Run Excel macro, указав имя макроса (аргументы через точку с запятой). Чтобы использовать макрос из личной книги макросов (PERSONAL.XLSB), в дополнительных параметрах Launch Excel нужно включить «Nest under a new Excel process» (разместить в новом процессе Excel) и «Load add-ins and macros» (загружать надстройки и макросы).5
Для запуска потока рабочего стола из облачного потока нужны зарегистрированная машина и подключение потока рабочего стола; для запуска на переднем плане (attended) владельцу подключения нужна пользовательская лицензия Power Automate Premium, а для безучастного (unattended) запуска на машине нужна лицензия Power Automate Process (или устаревший надстройка Unattended RPA).910 Общее проектирование потоков рабочего стола — обработка ошибок, предпосылки для безучастного выполнения и прочее — подробно разобрано в отдельной статье «Автоматизация бизнес-процессов с Power Automate — выбор между облачным потоком и потоком рабочего стола, проектирование обработки ошибок».
5. Лицензии и предпосылки
То, что Office Scripts — не «бесплатная функция, идущая вместе с Excel», стоит выяснить на раннем этапе решения о миграции.
- Для использования и создания Office Scripts нужна коммерческая или образовательная лицензия подписки Microsoft 365 (Office 365 Business / Business Premium / ProPlus / ProPlus for Devices / A3 / A5 / E1 / E3 / E5 / F3) и OneDrive for Business. Также обязательны включённые ссылки общего доступа внутри организации и подключение к интернету с включёнными подключёнными возможностями (connected experiences).6
- Для использования Office Scripts из Power Automate тоже нужна бизнес-лицензия Microsoft 365. E1 и F3 позволяют запускать скрипты через Power Automate, но не дают доступа к собственной интеграции Power Automate в Excel (например, к функции «Automate my work»).7
- Office Scripts для персональной/домашней подписки Microsoft 365 пока находится в предпросмотре и требует участия в программе Microsoft 365 Insider — как основу для рабочего использования это рассматривать нельзя.6
- На стороне клиента функция работает в Excel в вебе, Excel для Windows (версии 2210 и новее) и Excel для Mac.6
- VBA же встроен в десктопный Excel и не требует отдельной лицензии.2
Иными словами, в среде, где «Excel в компании — бессрочная (разово купленная) лицензия, а подписки на Microsoft 365 нет», варианта Office Scripts попросту не существует. В таком случае миграция сводится либо к автоматизации запуска через поток рабочего стола, либо к переписыванию на .NET.
Стоит держать в уме и разницу в безопасности. Макрос VBA работает с теми же правами, что и сам Excel, поэтому имеет доступ ко всему рабочему столу; Office Script имеет доступ только к книге, а токен аутентификации авторизованного пользователя скрипту вообще не передаётся. Администраторы могут управлять на уровне арендатора или группы тем, разрешено ли использовать Office Scripts вообще и разрешено ли использовать их из Power Automate. Для ИТ-подразделений, которым непросто удерживать под контролем безопасность макросов, эта управляемость — одно из реальных преимуществ миграции.2
6. Как вести миграцию — инвентаризация, классификация, поэтапный перенос
Практическую миграцию рекомендуется вести в три этапа.
Этап 1: инвентаризация. Составьте список того, в каких книгах, какие макросы работают и кто за них отвечает. Здесь применима та же процедура, что и при подготовке к отказу от VBScript, поэтому за конкретными шагами обратитесь к отдельной статье «Руководство по проверке VBA и внутренних инструментов перед отказом от VBScript». По итогам инвентаризации обычно обнаруживается, что 20–30% макросов уже не используются, и одно только их исключение из миграции заметно снижает объём работы.
Этап 2: классификация. Распределите оставшиеся макросы по таблице решений из главы 3. Хитрость здесь в том, чтобы разбивать макрос не целиком, а по единицам обработки. Макрос «собрать файлы → привести в порядок → отправить письмом» можно разложить на сочетание (3) коннектора, (2) Office Script и почтового коннектора. Кандидатами на (1) сохранение как есть или (4) запуск через поток рабочего стола становятся только те части, которые после разбиения всё равно зависят от VBA — интерактивный ввод через UserForm, операции с другими приложениями через COM и т. п.
Этап 3: поэтапный перенос. Не переписывайте все макросы сразу — расставьте приоритеты.
- Начните с макросов, которые выполняются часто и полностью укладываются в рамки книги. Здесь и эффект от переноса максимален, и удобно осваивать Office Scripts. VBA и TypeScript — разные языки, но в Office Scripts тоже есть запись действий (Action Recorder), позволяющая набросать черновик примерно так же, как запись макроса в VBA.2
- Дайте перенесённому потоку поработать параллельно с оригиналом и какое-то время сверяйте результаты с версией на VBA. Именно здесь всплывают расхождения из-за перехода на таблицу или различий в формате дат.
- То, что решено оставить на VBA, «оставляйте под управлением». Зафиксируйте порядок запуска и ответственного, а где возможно — переведите на запуск через поток рабочего стола, чтобы сохранялся журнал выполнения.
Более общий вопрос о будущем VBA и о том, в каких случаях им ещё вполне уместно продолжать пользоваться, разобран в статье «Что такое VBA — ограничения, перспективы и реалистичные паттерны миграции», а сравнение подходов для переноса формирования отчётов на .NET — в статье «Как формировать отчёты Excel — COM / Open XML / шаблоны». Если же вы рассматриваете вариант управления Excel из .NET через COM, там есть классическая проблема остающегося в памяти процесса, поэтому стоит также заглянуть в статью «Проблема оставшегося процесса EXCEL.EXE при работе с Excel из C# — паттерны освобождения COM-ссылок и когда стоит переходить на другой подход».
7. Итог
Ответ на вопрос «можно ли перенести VBA на Power Automate» звучит так: «перенести макрос целиком нельзя, но если разбить обработку на части, для большей их части место находится».
Обработка, полностью укладывающаяся в рамки книги, становится Office Script и вызывается из облачного потока; простые операции со строками отдаются напрямую коннектору; всё, что связано с другими приложениями или UserForm, либо остаётся на VBA, либо получает отсрочку через поток рабочего стола; а большие объёмы данных и сложная логика уходят на .NET. Если провести такую сортировку заранее, миграцию не нужно делать одним рывком — можно двигаться постепенно, начиная с самых часто используемых макросов.
И наоборот: если пропустить сортировку и сразу начать «переписывать всё в Office Scripts», работа быстро упрётся в стену событий и UserForm, лимиты в 5 МБ и 120 секунд и требование обязательной таблицы. Успех миграции определяется не мастерством переписывания кода, а тем, насколько тщательно проведена инвентаризация и классификация до её начала. Относиться к наработкам на VBA не как к «тому, что рано или поздно выбросят», а как к «тому, что нужно рассортировать и использовать», в итоге оказывается самым дешёвым подходом.
Похожие статьи
- Что такое VBA — ограничения, перспективы и реалистичные паттерны миграции
- Руководство по проверке VBA и внутренних инструментов перед отказом от VBScript
- Автоматизация бизнес-процессов с Power Automate — выбор между облачным потоком и потоком рабочего стола, проектирование обработки ошибок
- Как формировать отчёты Excel — COM / Open XML / шаблоны
- Проблема оставшегося процесса EXCEL.EXE при работе с Excel из C# — паттерны освобождения COM-ссылок и когда стоит переходить на другой подход
Смежные области консультирования
KomuraSoft LLC (合同会社小村ソフト) занимается инвентаризацией существующих бизнес-процессов на Excel/VBA и проектированием поэтапного переноса на Power Automate, Office Scripts и .NET с опорой на уже накопленные наработки.
- Поддержка использования существующих активов и миграции
- Техническая консультация и ревью проекта
- Разработка приложений для Windows
- Связаться с нами
Справочные ссылки
-
Microsoft Learn, How to use macro-enabled files in Power Automate flows. О том, что макросы внутри файлов .xlsm нельзя запустить из Power Automate (доступны только Office Scripts), что .xlsm можно выбрать через файловый браузер только в действии Run script, а также о файлах с элементами ActiveX/формы, которые иногда не работают. ↩ ↩2
-
Microsoft Learn, Differences between Office Scripts and VBA macros. О том, что Office Scripts работает только с Excel и имеет доступ только к книге, что события не поддерживаются, что COM/OLE доступны только в VBA, что для Office Scripts нужна коммерческая/образовательная лицензия, тогда как VBA входит в десктопный Excel по умолчанию, а также о различиях в записи действий и средствах контроля безопасности. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10
-
Microsoft Learn, Differences between Office Scripts and Office Add-ins. О том, что Office Scripts может взаимодействовать только с книгой, а для диалогов и собственных элементов интерфейса требуются надстройки Office. ↩ ↩2
-
Microsoft Learn, Excel Online (Business) - Connectors reference. О максимальном размере файла в 25 МБ, лимите запроса в 5 МБ, лимите List rows по умолчанию в 256 строк с пагинацией, лимите возвращаемых столбцов по умолчанию в 500, лимитах Run script в 3 вызова за 10 секунд и 1 600 в день, блокировке файла до 6 минут после последнего использования, задержке отражения записи до 30 секунд, троттлинге в 100 вызовов за 60 секунд на подключение, отсутствии поддержки одновременного редактирования и поддерживаемых форматах файлов. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7
-
Microsoft Learn, Run macros on an Excel workbook. О запуске макроса VBA через действие Run Excel macro потока рабочего стола и о необходимости опций «Nest under a new Excel process» / «Load add-ins and macros» в Launch Excel для запуска макроса из PERSONAL.XLSB. ↩ ↩2 ↩3
-
Microsoft Learn, Platform limits and requirements with Office Scripts. О перечне необходимых лицензий и требовании OneDrive for Business, поддерживаемых платформах (Excel в вебе / Windows версии 2210+ / Mac), лимите запроса/ответа в 5 МБ, лимите диапазона в 5 миллионов ячеек, лимите Run script в 1 600 вызовов в день, тайм-ауте в 120 секунд, лимите параметров в 30 000 000 байт, сбое внешних вызовов API (fetch) при запуске через Power Automate и о том, что персональная/домашняя версия находится в предпросмотре. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12
-
Microsoft Learn, Run Office Scripts with Power Automate. О действиях Run script / Run script from SharePoint library, о необходимости бизнес-лицензии Microsoft 365 для использования Office Scripts в Power Automate, а также о том, что E1 и F3 позволяют запускать скрипты через Power Automate, но не дают доступа к собственной интеграции Excel. ↩ ↩2 ↩3
-
Microsoft Learn, Trigger desktop flows from cloud flows. О предпосылках запуска потока рабочего стола из облачного потока (зарегистрированная машина, подключение потока рабочего стола и лицензия, соответствующая режиму выполнения). ↩ ↩2
-
Microsoft Learn, A failed license check on a desktop flow run. О том, что для запуска потока рабочего стола на переднем плане владельцу подключения нужна пользовательская лицензия Power Automate Premium, а для безучастного запуска — надстройка Unattended RPA или лицензия Power Automate Process. ↩ ↩2
-
Microsoft Learn, Office Scripts in Excel. О том, что собственная функция расписания скриптов в Excel временно отключена и вместо неё рекомендуется строить расписание как поток Power Automate. ↩
Похожие статьи
Недавние статьи с теми же тегами помогут подробнее изучить близкие темы.
Автоматизация бизнес-процессов с Power Automate — выбор между облачным потоком и потоком рабочего стола, проектирование обработки ошибок
Разбираем различия между облачными потоками и потоками рабочего стола в Power Automate, выбор между PowerShell и VBA, лицензирование, обр...
Автоматическая обработка PDF-файлов заказов и счетов, приходящих по почте, в Power Automate — проектирование сохранения, распределения, уведомлений и распознавания
Разбираем проектирование автоматизации сохранения, распределения и уведомлений для PDF-файлов заказов и счетов, приходящих по почте, сред...
Обработка ошибок и повторные попытки в Power Automate — как не допустить, чтобы работающий поток незаметно остановился
Сборник паттернов проектирования, которые не дают потокам Power Automate незаметно останавливаться: значения политики повторов по умолчан...
Проектирование регулярных потоков в Power Automate — практика обработки конца месяца, проверки рабочих дней и напоминаний
Практическое руководство по автоматизации регулярных процессов через триггер Recurrence в Power Automate: ловушка часового пояса UTC по у...
Автоматизация переноса данных в базовую систему с помощью Power Automate for Desktop — замена ручного ввода из Excel и с бумаги автоматизацией интерфейса
Практическое руководство по замене ручного переноса данных в старые базовые системы без API автоматизацией интерфейса в Power Automate fo...
Связанные темы
Эти страницы показывают тему статьи в более широком контексте услуг и решений.
Технические темы Windows
Раздел о разработке Windows, расследовании сбоев и использовании существующих активов.
Услуги по этой теме
Статья напрямую связана со следующими услугами.
Использование и перенос существующих активов
Помогаем использовать и переносить активы COM / ActiveX / OCX и зависимости 32/64 бит.
Частые вопросы
Вопросы, которые часто возникают при консультациях по теме статьи.
- Можно ли запустить существующий макрос VBA прямо из Power Automate?
- Из облачного потока — нет. Коннектор Excel Online (Business) умеет работать с самим файлом .xlsm, но не может выполнить макросы внутри него — запускать оттуда можно только Office Scripts. А вот в потоке рабочего стола (Power Automate for desktop) есть действие Run Excel macro, которое запускает VBA-макрос книги, открытой через Launch Excel, ровно в том виде, в каком он есть. Если нужно просто автоматизировать запуск, не меняя код VBA, реалистичный вариант — через поток рабочего стола.
- Является ли Office Scripts полноценной заменой VBA?
- Нет. Office Scripts работает только с Excel и не может управлять другими приложениями Office, такими как Word или Outlook. Поскольку скрипт имеет доступ только к книге, недоступны ни локальные файлы, ни интеграция через COM/OLE, ни событийная модель вроде Workbook_Open, ни собственные диалоги на базе UserForm. Зато обработку, которая полностью укладывается в рамки книги, — форматирование, агрегацию, перенос данных — можно перевести на Office Scripts и запускать по расписанию или по событию (письмо, форма) через Power Automate. Правильнее говорить не о замене одного другим, а о том, что у них разные зоны ответственности.
- Какая лицензия нужна для использования Office Scripts?
- Коммерческая или образовательная лицензия Microsoft 365 (Office 365 Business / Business Premium / ProPlus / E1 / E3 / E5 / F3 / A3 / A5) и OneDrive for Business. Для запуска Office Scripts из Power Automate также нужна бизнес-лицензия Microsoft 365; лицензии E1 и F3 позволяют запускать скрипты через Power Automate, но не дают доступа к функциям интеграции Power Automate внутри самого Excel. Это отличается от VBA, который входит в десктопный Excel без дополнительной лицензии, — поэтому лицензирование стоит проверить ещё до принятия решения о миграции.
- Можно ли обойтись одним коннектором Excel Online (Business) без скриптов?
- Для простой обработки — да, но есть немало ограничений. Добавление, получение, обновление и удаление строк рассчитаны на диапазон, оформленный как таблица (ListObject); действие List rows present in a table по умолчанию возвращает не более 256 строк, и для получения всех строк нужно включить пагинацию. Размер файла ограничен 25 МБ, один запрос — 5 МБ, а запись данных может отражаться с задержкой до 30 секунд. На практике удобно разделять: чтение и запись нескольких строк таблицы — напрямую через коннектор, форматирование ячеек и обработка нескольких листов — через Office Scripts.
Об авторе
Страница с профилем автора статьи.
Го Комура
Представитель KomuraSoft LLC
Специализируется на разработке программного обеспечения для Windows, техническом консалтинге и расследовании сбоев, особенно в проектах с унаследованными системами и трудно воспроизводимыми ошибками.
Публичные ссылки