Excel-VBA-Makros zu Power Automate migrieren — Was Sie durch Office-Skripte ersetzen können, und was als VBA bleiben sollte

· · Power Automate, VBA, Excel, Office, Office-Skripte, Betriebsautomatisierung, Cloudflow, Nutzung vorhandener Ressourcen, Migration, Technische Beratung

„Dieser Vorgang läuft über ein Excel-Makro, aber die Person, die es gebaut hat, ist nicht mehr im Unternehmen. Können wir das zu diesem Power-Automate-Ding migrieren?“ — diese Art Frage bekomme ich häufig gestellt. Tägliche Auswertungsjobs und Berichtserstellung, die in VBA gebaut wurden, laufen bei vielen Unternehmen nach wie vor im Produktivbetrieb, und Nachrichten über den Weggang des Makro-Autors oder über die Abkündigung von VBScript haben bei vielen Verantwortlichen Unsicherheit darüber ausgelöst, wie viel Zukunft ihre VBA-Bestände eigentlich noch haben.

Vorweg gesagt: „VBA zu Power Automate migrieren“ ist, genauer betrachtet, eine Kombination mehrerer eigenständiger Geschichten — einen Teil des VBA als Office-Skript neu schreiben und aus Power Automate aufrufen, einen weiteren Teil durch einen Connector ersetzen und den Rest als VBA belassen. Es gibt keinen Mechanismus, der ein VBA-Makro unverändert innerhalb eines Cloudflows ausführt. Dieser Artikel arbeitet durch, welche Verarbeitung wohin migrieren kann und welche Teile bei VBA bleiben sollten, wobei wir uns dabei laufend an der Primärdokumentation von Microsoft Learn orientieren.

1. Das Wichtigste zuerst

  • Sie können ein VBA-Makro nicht direkt aus einem Power-Automate-Cloudflow ausführen. Der Excel Online (Business)-Connector kann .xlsm-Dateien verarbeiten, aber die darin enthaltenen Makros nicht ausführen — nur Office-Skripte lassen sich auf diese Weise ausführen.1
  • Office-Skripte sind kein vollständiger Ersatz für VBA. Sie funktionieren nur mit Excel und können keine anderen Office-Apps bedienen, nicht auf Ereignisse reagieren, kein UserForm verwenden, keine COM/OLE-Integration durchführen und nicht auf lokale Dateien zugreifen.23
  • Andererseits lohnt es sich sehr, Verarbeitung, die vollständig innerhalb der Arbeitsmappe bleibt — Formatierung, Aggregation, Übertragung —, in ein Office-Skript umzuwandeln. In Kombination mit Power Automate erhalten Sie zeitgesteuerte Ausführungen oder Auslöser durch eine eingehende E-Mail oder ein Formular — eine Art von „läuft, ohne dass Excel jemals geöffnet wird“-Automatisierung, die mit VBA nie erreichbar war.2
  • Für etwas so Einfaches wie das Hinzufügen oder Auslesen von Tabellenzeilen können Sie es direkt mit Aktionen des Excel Online (Business)-Connectors erledigen, ganz ohne ein Skript zu schreiben — prüfen Sie nur vorher die Einschränkungen (eine Tabelle ist erforderlich, die Standardobergrenze liegt bei 256 Zeilen, Dateien sind auf 25 MB begrenzt und so weiter).4
  • Für Verarbeitung, die unbedingt VBA benötigt, gibt es die Möglichkeit, das bestehende VBA unverändert mit der Run-Excel-macro-Aktion einer Desktopflow zu starten. Damit lassen sich der Start und die umliegenden Schritte automatisieren, ohne das VBA überhaupt umzuschreiben.5
  • Office-Skripte benötigen eine kommerzielle oder Bildungs-Microsoft-365-Lizenz sowie OneDrive for Business. VBA benötigt keine zusätzliche Lizenz — das ist also eine Voraussetzung, die Sie vor einer Migrationsentscheidung klären müssen.62

2. Wie VBA, Office-Skripte und Power Automate zusammenhängen

Sortieren wir zunächst die beteiligten Akteure — es gibt viele ähnlich klingende Namen, und genau das ist die Hauptquelle der Verwirrung.

Desktop-SeiteCloud-SeiteRun scriptZeilen hinzufügen/abrufen/aktualisierenRun Excel macroruft aufPower AutomateDesktopflowBestehendes VBA-MakroPower AutomateCloudflowExcel Online BusinessConnectorOffice-SkriptExcel-Automatisierung in TypeScriptExcel-TabelleArbeitsmappe auf OneDrive / SharePointArbeitsmappe auf lokalem Laufwerk / Dateiserver
  • Office-Skripte sind eine Skriptfunktion, die Excel mit TypeScript automatisiert. Sie laufen in Excel im Web, Excel für Windows (Version 2210 und höher) und Excel für Mac und lassen sich aus einem Power-Automate-Cloudflow aufrufen. Der grundlegende Unterschied zu VBA besteht darin, dass VBA für den Desktop konzipiert ist, während Office-Skripte für Cloud- und plattformübergreifende Nutzung entworfen wurden.26
  • Der Excel Online (Business)-Connector bedient Excel-Dateien auf OneDrive for Business oder SharePoint aus einem Cloudflow heraus. Er verfügt über Zeilenoperationen für Tabellen sowie über eine Aktion „Run script“, die ein Office-Skript ausführt.7
  • Desktopflows (Power Automate for desktop) sind RPA, das Apps unter Windows bedient. Ihre Sammlung an Excel-Aktionen umfasst eine Aktion, die ein VBA-Makro ausführt.5

Was VBA kann, das Office-Skripte nicht können

Das ist der mit Abstand wichtigste Punkt für die Migrationsentscheidung. Hier eine Zusammenstellung nach Microsoft Learns „Differences between Office Scripts and VBA macros“.2

Was VBA kann Wie Office-Skripte damit umgehen
Bedienung anderer Office-Apps außer Excel, etwa Word, Outlook oder Access Nicht möglich. Office-Skripte funktionieren nur mit Excel und können nicht mit anderen Office-Apps genutzt werden
COM/OLE-Integration mit anderen Apps oder externen Komponenten sowie Win32-API-Aufrufe (Declare) Nicht möglich. Ein Skript kann nur auf die Arbeitsmappe zugreifen, nicht auf den Host-Rechner
Ereignisgesteuerter Code wie Workbook_Open oder Worksheet_Change Nicht möglich. Excel-seitige Ereignisse werden nicht unterstützt; die einzigen Wege, ein Skript auszuführen, sind manuelle Ausführung oder ein Aufruf aus Power Automate
Benutzerdefinierte Dialoge oder Eingabemasken mit UserForm Nicht möglich. Jede UI über die Arbeitsmappe hinaus (Dialoge, Aufgabenbereiche) fällt in den Bereich von Office-Add-ins3
Dateioperationen in lokalen Ordnern (Öffnen, Speichern, Auflisten von Dateien) Nicht möglich. Alles, was über die Arbeitsmappe hinausreicht, muss über einen Connector auf der Power-Automate-Seite erledigt werden (OneDrive, SharePoint usw.)
Der breite Funktionsumfang von Excel, einschließlich Desktop-spezifischer Funktionen Teilweise nicht möglich. VBA deckt einen breiteren Bereich der Excel-Funktionalität ab; Office-Skripte sind darauf ausgelegt, in etwa die Szenarien von Excel im Web abzudecken

Auch der Aufruf externer Webdienste braucht Sorgfalt. Office-Skripte selbst unterstützen begrenzte externe Aufrufe, doch wenn sie über Power Automate ausgeführt werden, schlägt jeder externe API-Aufruf (fetch) aus dem Skript heraus fehl. Externe Integration muss in die eigenen Connectors oder die HTTP-Aktion der Flow-Seite eingebaut werden, nicht in das Skript.26 Zu beachten ist jedoch, dass die allgemeine HTTP-Aktion zum Aufrufen einer beliebigen API als Premium-Connector eingestuft ist, sodass eine reine Microsoft-365-Lizenz sie nicht freischaltet.8 Bevorzugen Sie überall dort einen Standard-Connector, wo einer für den zu integrierenden Dienst existiert, und falls der Aufruf einer eigenen API unumgänglich ist, rechnen Sie die zusätzlichen Kosten einer Premium-Lizenz in Ihre Migrationsentscheidung ein.

Viele, die sich diese Liste ansehen, werden das Gefühl haben, dass „im Grunde unser gesamtes Makro irgendwo hier drin vorkommt“. Das ist eine faire Reaktion — ein über Jahre gewachsenes VBA-Makro enthält routinemäßig Dinge wie das Versenden von E-Mails über Outlook, das Durchlaufen eines Ordnerbaums und die Entgegennahme von Eingaben über ein UserForm. Aber bevor Sie aufgeben, versuchen Sie, den Vorgang zu zerlegen. Bei einem Makro, das „Dateien aus einem Ordner sammelt, eine Arbeitsmappe umformatiert und sie per E-Mail versendet“, sind das Sammeln der Dateien und der E-Mail-Versand genau die Art von Aufgabe, in der Power-Automate-Connectors gut sind, und wenn Sie nur den Teil der Arbeitsmappen-Formatierung in ein Office-Skript umwandeln, kann das Ganze migrieren — dieses Muster kommt häufiger vor, als man erwarten würde.

3. Eine Entscheidungstabelle — Fünf Optionen je nach Anwendungsfall auswählen

Das Migrationsziel ist nicht auf „in ein Office-Skript umwandeln“ beschränkt. In der Praxis denkt man in diesen fünf Optionen.

Option Passt zu Fällen, in denen Voraussetzungen / Einschränkungen
(1) Als VBA belassen Individuelle Arbeit oder kleines Team, manuelle Ausführung. UserForm, Ereignisse oder Integration mit anderen Apps sind wirklich unverzichtbar, und jemand ist vor Ort, um es ohne Probleme manuell auszuführen Keine zusätzliche Lizenz nötig.2 Aber das Risiko, dass es zu einem von einer einzelnen Person abhängigen, unverwalteten Makro wird, über eine Bestandsaufnahme angehen
(2) In ein Office-Skript umwandeln und aus einem Cloudflow ausführen Formatierung, Aggregation oder Übertragung, die vollständig innerhalb der Arbeitsmappe bleibt. Sie wünschen sich zeitgesteuerte Ausführungen oder einen Auslöser durch eine eingehende E-Mail oder ein Formular. Die Arbeitsmappe kann auf OneDrive / SharePoint liegen Erfordert eine kommerzielle/Bildungs-Microsoft-365-Lizenz.6 Ereignisse, UserForm und Ähnliches müssen neu konzipiert werden
(3) Direkt mit dem Excel Online (Business)-Connector erledigen Einfache Verarbeitung, die sich auf das Hinzufügen, Abrufen, Aktualisieren oder Löschen von Tabellenzeilen beschränkt — z. B. „Formularantworten an Excel anhängen“ Setzt voraus, dass der Zielbereich bereits eine Tabelle ist. Grenzwerte umfassen standardmäßig 256 Zeilen und eine Dateigrößenobergrenze von 25 MB4
(4) Das bestehende VBA unverändert über eine Desktopflow starten Kein Spielraum, das VBA umzuschreiben, aber Sie möchten nur den Start und die umliegenden Schritte automatisieren (Dateien ablegen, Benachrichtigungen versenden). Die Arbeitsmappe liegt auf einem internen Dateiserver Erfordert einen Windows-Rechner. Der Aufruf aus einem Cloudflow benötigt eine Power Automate Premium-Benutzerlizenz für den Verbindungsinhaber bei angeleiteter Ausführung und eine Process-Lizenz bei unbeaufsichtigter Ausführung910
(5) In .NET neu aufbauen Große Datenmengen, komplexe Geschäftslogik, wo automatisierte Tests oder Git-basierte Versionskontrolle unerlässlich sind, oder wo Berichtserstellung das Hauptziel ist Höchste Entwicklungskosten, aber die beste langfristige Wartbarkeit und Leistung. Berichte lassen sich mit Open XML und ähnlichen Ansätzen von Excel unabhängig machen

Der folgende Ablauf entscheidet grob, welche Option zu wählen ist.

NeinJaNeinUI anderer App / COM-AutomatisierungJaJaJaFormatierung/mehrere Blätter/Logik im SpielNeinnur interner DateiserverNeinJa/Leistung oder Tests nötigEin VBA-Makro auswählenBleibt der Vorgangvollständig innerhalb der Arbeitsmappe?Lässt sich der Teil außerhalb von Exceldurch einen Connector ersetzen?z. B. E-Mail-Versand, DateisammlungVorgang aufteilen:Excel-Teil -> Office-SkriptRest -> Flow-ConnectorsKönnen Sie es sich leisten,das VBA umzuschreiben?Kann die Arbeitsmappeauf OneDrive/SharePoint liegen?Handelt es sich nur umZeilenoperationen auf einer Tabelle?Direkt mit demExcel Online Business-Connector erledigenIn ein Office-Skript umwandelnund mit Run script ausführenDas bestehende VBAunverändert über eine Desktopflow startenIn .NET neu aufbauen

Bemerkenswert ist: Option (4) ist kein „Endziel“ der Migration — sie ist Lebenserhaltung. Die Abhängigkeit des zugrunde liegenden VBA von einer einzelnen Person und das Fehlen einer Versionskontrolle bleiben genau so bestehen wie zuvor. Trotzdem ist sie praktisch genug als Übergangslösung: Automatisieren Sie zunächst nur den Start, um manuelle Ausführungsfehler zu beseitigen, und nutzen Sie diese Zeit, um das Innere des VBA schrittweise nach Office-Skripte oder .NET zu verlagern.

4. Implementierungsmuster — Die Run-Script-Aktion und Connector-Grenzwerte

Das Skript ausführen (Run Script)

Um ein Office-Skript aus einem Cloudflow auszuführen, verwenden Sie zwei Aktionen des Excel Online (Business)-Connectors. Run script dient für Skripte, die in OneDrive (dem Standardspeicherort) abgelegt sind, und Run script from SharePoint library für Skripte, die in einer Team-SharePoint-Bibliothek gespeichert sind.7

Ein typischer Aufbau sieht so aus.

  1. Auslöser: Zeitplan (Recurrence), eingehende E-Mail, Formularübermittlung usw.
  2. Die Zielarbeitsmappe über den OneDrive-/SharePoint-Connector identifizieren
  3. Das Office-Skript mit Run script ausführen und den Rückgabewert erfassen
  4. Den Rückgabewert nutzen, um eine Teams-Benachrichtigung oder eine E-Mail zu senden

Ein Skript kann Parameter entgegennehmen und einen Wert zurückgeben, was Datenübergabe in beide Richtungen ermöglicht — etwa „einen Suchschlüssel aus dem Flow übergeben, die passenden Daten aus der Arbeitsmappe zurückerhalten und daraus auf der Flow-Seite eine E-Mail machen“. Beachten Sie, dass die Funktion „Skripte zeitgesteuert ausführen“, die früher in Excel selbst existierte, derzeit deaktiviert ist; stattdessen wird empfohlen, die zeitgesteuerte Ausführung als Power-Automate-Flow zu bauen.11

Prüfen Sie zuerst die Grenzwerte

Die größte Falle bei der Migration von VBA sind die Grenzwerte, die spezifisch für die Cloud-Ausführung gelten — Obergrenzen, die bei Desktop-VBA praktisch nicht existierten, sind hier fest verankert.

Grenzwert Wert Quelle
Anfrage-/Antwortgröße von Office-Skripten pro Aufruf Bis zu 5 MB 6
Zellen in einem einzelnen Range Bis zu 5 Millionen Zellen 6
Aufrufhäufigkeit von Run script 1.600 Aufrufe pro Benutzer und Tag, höchstens 3 pro 10 Sekunden 64
Timeout synchroner Verarbeitung 120 Sekunden 6
An Run script übergebene Parametergröße Bis zu 30.000.000 Bytes (etwa 28,6 MB) 6
Vom Connector verarbeitbare Excel-Dateigröße Bis zu 25 MB 4
Anfragegröße des Connectors Bis zu 5 MB pro Anfrage 4
API-Aufrufe des Connectors 100 Aufrufe pro 60 Sekunden pro Verbindung 4

Wenn Sie direkt über den Excel Online (Business)-Connector auf einer Tabelle arbeiten, prüfen Sie zusätzlich diese Punkte.4

  • Zeilenoperationen setzen eine Tabelle voraus. Aktionen wie „Add a row into a table“ und „Get a row“ sind darauf ausgelegt, eine Tabelle (ein ListObject) anzugeben — sie können keine Daten ansprechen, die einfach in einen normalen Zellbereich geschrieben sind. Ein Blatt aus der VBA-Zeit, das „irgendwo um Zelle A1 herum zu schreiben beginnt“, muss vor der Migration in eine Tabelle umgewandelt werden.
  • List rows present in a table liefert standardmäßig nur bis zu 256 Zeilen zurück. Aktivieren Sie Pagination, um alle Zeilen abzurufen. Auch die zurückgegebenen Spalten sind standardmäßig auf die ersten 500 begrenzt.
  • Schreibvorgänge können bis zu etwa 30 Sekunden benötigen, bis sie sichtbar werden. Eine Datei kann außerdem nach der Nutzung durch den Connector bis zu 6 Minuten lang gesperrt bleiben.
  • Gleichzeitige Schreibvorgänge von mehreren Clients werden nicht unterstützt. Wenn ein Flow beispielsweise in eine Arbeitsmappe schreibt, die gerade in der Desktop-Version von Excel geöffnet ist, führt das zu Konflikten und Inkonsistenzen.
  • Die unterstützten Formate sind .xlsx und .xlsb (binäre Arbeitsmappe). .xlsm lässt sich nur über den Datei-Browser in der Run-script-Aktion auswählen; für die Nutzung in anderen Aktionen ist die direkte Angabe der Datei-ID erforderlich. Doch wie oben erwähnt, werden die darin enthaltenen VBA-Makros nicht ausgeführt. Eine .xlsm-Datei mit ActiveX-Steuerelementen oder Formularsteuerelementen funktioniert unter Umständen mit dem Connector überhaupt nicht, prüfen Sie dies also vorher.1

Versuchen Sie, ein „Makro, das jede Nacht Hunderttausende Zeilen aggregiert“ unverändert in ein Office-Skript umzuwandeln, stoßen Sie direkt an das 5-MB-Limit und das 120-Sekunden-Timeout. Es ist gesünder, Verarbeitung dieser Größenordnung von vornherein nach .NET (Option 5) zu leiten.

VBA aus einer Desktopflow starten

Wenn Sie das VBA unverändert beibehalten, öffnen Sie die Arbeitsmappe mit Launch Excel einer Desktopflow und führen dann mit der Aktion Run Excel macro das Makro aus, wobei Sie den Makronamen angeben (Argumente durch Semikolon getrennt). Um ein Makro aus der persönlichen Makroarbeitsmappe (PERSONAL.XLSB) zu nutzen, müssen Sie in den erweiterten Einstellungen von Launch Excel „Nest under a new Excel process“ und „Load add-ins and macros“ aktivieren.5

Das Auslösen einer Desktopflow aus einem Cloudflow erfordert einen registrierten Rechner und eine Desktopflow-Verbindung; angeleitete Ausführungen benötigen eine Power Automate Premium-Benutzerlizenz für den Verbindungsinhaber, unbeaufsichtigte Ausführungen eine Power Automate Process-Lizenz auf dem Rechner (oder das ältere Unattended-RPA-Add-on).910 Das Gesamtdesign von Desktopflows — Fehlerbehandlung, die Voraussetzungen für unbeaufsichtigte Ausführung und so weiter — behandeln wir ausführlicher in einem separaten Artikel, „Geschäftsprozesse mit Power Automate automatisieren — Die Wahl zwischen Cloudflows und Desktopflows und das Design der Fehlerbehandlung“.

5. Lizenzierung und Voraussetzungen

Der Punkt, dass Office-Skripte nicht „eine kostenlose Funktion, die mit Excel mitkommt“ sind, sollte früh in der Migrationsentscheidung geklärt werden.

  • Die Nutzung oder das Erstellen von Office-Skripten erfordert eine kommerzielle oder Bildungs-Microsoft-365-Abonnementlizenz (Office 365 Business / Business Premium / ProPlus / ProPlus for Devices / A3 / A5 / E1 / E3 / E5 / F3) sowie OneDrive for Business. Auch aktivierte organisationsweite Freigabelinks und eine Internetverbindung mit aktivierten verbundenen Diensten sind Voraussetzungen.6
  • Die Nutzung von Office-Skripten aus Power Automate erfordert ebenfalls eine geschäftliche Microsoft-365-Lizenz. E1 und F3 können Skripte über Power Automate ausführen, aber nicht Excels eigene Power-Automate-Integration nutzen (Funktionen wie Excels „Arbeit automatisieren“).7
  • Office-Skripte für private/Heim-Microsoft-365 befinden sich noch in der Vorschau und erfordern eine Anmeldung zum Microsoft 365 Insider-Programm — sie können nicht als Grundlage für geschäftliche Nutzung vorausgesetzt werden.6
  • Auf der Client-Seite läuft es in Excel im Web, Excel für Windows (Version 2210 und höher) und Excel für Mac.6
  • VBA hingegen ist fest in die Desktop-Version von Excel eingebaut und benötigt keine spezielle Lizenz.2

Mit anderen Worten: In einer Umgebung, in der „unser internes Excel eine Dauerlizenz (Einmalkauf) ist und wir kein Microsoft-365-Abonnement haben“, existiert die Option Office-Skripte von vornherein nicht. In diesem Fall verengt sich das Migrationsziel auf Startautomatisierung über eine Desktopflow oder einen Neubau in .NET.

Auch die sicherheitstechnischen Unterschiede sind es wert, verstanden zu werden. Ein VBA-Makro läuft mit denselben Rechten wie Excel und hat damit Zugriff auf den gesamten Desktop; ein Office-Skript kann immer nur auf die Arbeitsmappe zugreifen, und das Authentifizierungstoken des angemeldeten Benutzers wird dem Skript nie übergeben. Administratoren können auf Mandanten- oder Gruppenebene steuern, ob Office-Skripte überhaupt genutzt werden können und ob sie aus Power Automate heraus genutzt werden können. Für IT-Abteilungen, die mit der Sicherheitskontrolle von Makros zu kämpfen hatten, ist diese Kontrollierbarkeit einer der echten Vorteile der Migration.2

6. Wie Sie an die Migration herangehen — Bestandsaufnahme, Klassifizierung, stufenweise Migration

Ich würde empfehlen, die eigentliche Migration in diesen drei Stufen durchzuführen.

Stufe 1: Bestandsaufnahme. Listen Sie auf, welche Arbeitsmappen welche Makros enthalten und unter wessen Verantwortung sie laufen. Dasselbe Verfahren, das für die Vorbereitung auf die VBScript-Abkündigung genutzt wird, lässt sich hier anwenden; die konkreten Schritte finden Sie im separaten Artikel „Ein VBA- und Prüfleitfaden für interne Tools zur Vorbereitung auf die VBScript-Abkündigung“. Es ist typisch, dass sich bis zum Abschluss der Bestandsaufnahme herausstellt, dass 20–30 % der Makros bereits ungenutzt sind, und allein deren Ausschluss aus der Migration reduziert den Arbeitsaufwand sofort.

Stufe 2: Klassifizieren. Ordnen Sie die verbliebenen Makros der Entscheidungstabelle aus Kapitel 3 zu. Der Trick dabei ist, jedes Makro nach Verarbeitungseinheit zu zerlegen, statt es als ein unteilbares Ganzes zu behandeln. Ein Makro, das „Dateien sammeln -> umformatieren -> per E-Mail senden“ leistet, lässt sich in eine Kombination aus (3) dem Connector plus (2) einem Office-Skript plus einem E-Mail-Connector zerlegen. Nur die Teile, die auch nach der Zerlegung noch von VBA abhängen — interaktive Eingabe über UserForm, COM-Operationen auf andere Apps und Ähnliches —, werden zu Kandidaten für (1) das Belassen an Ort und Stelle oder (4) den Weg über eine Desktopflow.

Stufe 3: Stufenweise migrieren. Schreiben Sie nicht jedes Makro auf einmal um — setzen Sie Prioritäten.

  1. Beginnen Sie mit Makros, die häufig laufen und vollständig innerhalb der Arbeitsmappe bleiben. Der Migrationsnutzen ist hier groß, und es ist auch ein guter Weg, sich mit Office-Skripten vertraut zu machen. VBA und TypeScript sind unterschiedliche Sprachen, aber Office-Skripte verfügen ebenfalls über einen Action Recorder, der es Ihnen erlaubt, einen ersten Entwurf mit einem VBA-Makroaufzeichnung sehr ähnlichen Gefühl zu erstellen.2
  2. Lassen Sie den migrierten Flow parallel zum Original laufen und gleichen Sie die Ergebnisse eine Zeit lang mit der VBA-Version ab. Hier zeigen sich Abweichungen, die etwa durch den Wechsel zu einer Tabelle oder unterschiedliche Datumsformatierung entstehen.
  3. Bei allem, was Sie als VBA behalten wollen, „unter Verwaltung stellen“. Dokumentieren Sie ein klares Verfahren und einen Verantwortlichen, und verlagern Sie es nach Möglichkeit in Richtung Start über eine Desktopflow, sodass ein Ausführungsprotokoll erhalten bleibt.

Die breitere Frage nach der Zukunft von VBA und wie man über die Fälle nachdenkt, in denen es noch in Ordnung ist, VBA weiter zu nutzen, wird in „Wie lange bleibt VBA relevant? — Grenzen, Zukunft und wann und wie man es realistisch ersetzt“ behandelt; ein Vergleich der Ansätze, um Berichtserstellung nach .NET zu verlagern, findet sich in „Excel-Berichtsausgabe erstellen — COM / Open XML / Vorlagen“. Und wenn Sie erwägen, Excel per COM aus .NET heraus zu steuern, gibt es dabei ein klassisches Problem, bei dem der Prozess danach bestehen bleibt; prüfen Sie dazu auch „Das Problem verbleibender EXCEL.EXE-Prozesse bei C#-Excel-Automatisierung — Muster zur Freigabe von COM-Referenzen und wann ersetzt werden sollte“.

7. Zusammenfassung

Die Antwort auf „Können wir von VBA zu Power Automate migrieren“ lautet: „Sie können nicht ein ganzes Makro pauschal portieren, aber wenn Sie die Verarbeitung zerlegen, findet sich für das meiste ein Weg.“

Verarbeitung, die vollständig innerhalb der Arbeitsmappe bleibt, wird zu einem Office-Skript, das aus einem Cloudflow aufgerufen wird; einfache Zeilenoperationen gehen direkt an einen Connector; alles, was Integration mit anderen Apps oder ein UserForm betrifft, bleibt entweder als VBA bestehen oder erhält über eine Desktopflow Lebenserhaltung; und große Datenmengen oder komplexe Logik werden nach .NET geleitet. Erledigen Sie diese Sortierung im Voraus, und die Migration muss nicht auf einmal geschehen — Sie können sich schrittweise durcharbeiten, beginnend mit den am häufigsten laufenden Makros.

Überspringen Sie dagegen die Sortierung und beginnen einfach mit „lasst uns alles als Office-Skript neu schreiben“, stoßen Sie nacheinander auf die Wand aus Ereignissen und UserForm, die 5-MB-/120-Sekunden-Grenzwerte und die Tabellenanforderung, und das Vorhaben gerät ins Stocken. Ob eine Migration gelingt, hängt weit mehr von der Bestandsaufnahme und Klassifizierung vor dem Beginn ab als von der Geschicklichkeit beim Umschreiben. VBA-Bestände als etwas zu behandeln, das „sortiert und sinnvoll genutzt“ werden soll, statt als etwas, das „irgendwann weggeworfen wird“, erweist sich am Ende als der günstigste Ansatz.

Verwandte Artikel

Verwandte Beratungsbereiche

Die Komura Software LLC übernimmt alles von der Bestandsaufnahme bestehender Excel-/VBA-gestützter Prozesse bis zur Konzeption einer stufenweisen Migration zu Power Automate, Office-Skripten und .NET, die auf dem Vorhandenen aufbaut.

  1. Microsoft Learn, How to use macro-enabled files in Power Automate flows. Dazu, dass Makros innerhalb von .xlsm-Dateien nicht aus Power Automate ausführbar sind (nur Office-Skripte), dass .xlsm nur über den Datei-Browser in der Run-script-Aktion auswählbar ist, sowie dazu, dass Dateien mit ActiveX-/Formularsteuerelementen mitunter nicht funktionieren.  2

  2. Microsoft Learn, Differences between Office Scripts and VBA macros. Dazu, dass Office-Skripte nur mit Excel funktionieren und ausschließlich auf die Arbeitsmappe zugreifen können, zum Fehlen von Ereignisunterstützung, dazu, dass COM/OLE nur VBA vorbehalten ist, dass Office-Skripte eine kommerzielle/Bildungslizenz benötigen, während VBA standardmäßig mit der Desktop-Version von Excel ausgeliefert wird, sowie zu Unterschieden bei Makroaufzeichnung und Sicherheitskontrollen.  2 3 4 5 6 7 8 9 10

  3. Microsoft Learn, Differences between Office Scripts and Office Add-ins. Dazu, dass Office-Skripte nur mit der Arbeitsmappe interagieren können und Office-Add-ins immer dann erforderlich sind, wenn Dialoge oder benutzerdefinierte UI-Steuerelemente benötigt werden.  2

  4. Microsoft Learn, Excel Online (Business) - Connectors reference. Zur maximalen Dateigröße von 25 MB, dem 5-MB-Limit pro Anfrage, der standardmäßigen 256-Zeilen-Obergrenze von List rows mit Pagination, der standardmäßigen 500-Spalten-Obergrenze bei abgerufenen Spalten, den Run-script-Grenzwerten von 3 Aufrufen pro 10 Sekunden und 1.600 pro Tag, bis zu 6 Minuten Dateisperre nach letzter Nutzung, bis zu 30 Sekunden Verzögerung bis Schreibvorgänge sichtbar werden, der Drosselung von 100 Aufrufen pro 60 Sekunden pro Verbindung, dem Fehlen von Unterstützung für gleichzeitige Bearbeitung sowie den unterstützten Dateiformaten.  2 3 4 5 6 7

  5. Microsoft Learn, Run macros on an Excel workbook. Zur Ausführung eines VBA-Makros über die Run-Excel-macro-Aktion einer Desktopflow sowie dazu, dass die Optionen „Nest under a new Excel process“ / „Load add-ins and macros“ in Launch Excel erforderlich sind, um ein Makro aus PERSONAL.XLSB auszuführen.  2 3

  6. Microsoft Learn, Platform limits and requirements with Office Scripts. Zur Liste der benötigten Lizenzen und der Anforderung von OneDrive for Business, den unterstützten Plattformen (Excel im Web / Windows-Version 2210+ / Mac), dem 5-MB-Anfrage-/Antwortlimit, dem 5-Millionen-Zellen-Range-Limit, dem 1.600-Aufrufe-pro-Tag-Limit von Run script, dem 120-Sekunden-Timeout, dem 30.000.000-Byte-Parameterlimit, dem Fehlschlagen externer API-Aufrufe (fetch) bei Ausführung über Power Automate sowie dazu, dass die private/Heim-Version sich in der Vorschau befindet.  2 3 4 5 6 7 8 9 10 11 12

  7. Microsoft Learn, Run Office Scripts with Power Automate. Zu den Aktionen Run script / Run script from SharePoint library, der für die Nutzung von Office-Skripten in Power Automate erforderlichen geschäftlichen Microsoft-365-Lizenz sowie dazu, dass E1/F3 Skripte über Power Automate ausführen können, jedoch nicht Excels eigene Integrationsfunktionen nutzen können.  2 3

  8. Microsoft Learn, Guidance: Migrate from classic workflows to Power Automate flows in SharePoint. Dazu, dass die allgemeine HTTP-Aktion von Power Automate ein Premium-Connector ist. 

  9. Microsoft Learn, Trigger desktop flows from cloud flows. Zu den Voraussetzungen für den Aufruf einer Desktopflow aus einem Cloudflow (ein registrierter Rechner, eine Desktopflow-Verbindung sowie eine dem Ausführungsmodus entsprechende Lizenz).  2

  10. Microsoft Learn, A failed license check on a desktop flow run. Dazu, dass angeleitete Desktopflow-Ausführungen eine Power Automate Premium-Benutzerlizenz für den Verbindungsinhaber erfordern und unbeaufsichtigte Ausführungen das Unattended-RPA-Add-on oder eine Power Automate Process-Lizenz benötigen.  2

  11. Microsoft Learn, Office Scripts in Excel. Dazu, dass Excels eigene Funktion zur Skript-Zeitplanung vorübergehend deaktiviert ist, mit dem Hinweis, stattdessen die zeitgesteuerte Ausführung als Power-Automate-Flow zu bauen. 

Aktuelle Artikel mit denselben Schlagwörtern führen zu verwandten Themen weiter.

Diese Seiten ordnen den Artikel in einen größeren Leistungs- und Entscheidungskontext ein.

Dieser Artikel ist direkt mit den folgenden Leistungen verbunden.

Häufige Fragen

Fragen, die in Beratungen zu diesem Artikelthema häufig gestellt werden.

Kann ein bestehendes VBA-Makro direkt von Power Automate ausgeführt werden?
Nicht aus einem Cloudflow heraus. Der Excel Online (Business)-Connector kann die .xlsm-Datei selbst verarbeiten, aber die darin enthaltenen Makros nicht ausführen — nur Office-Skripte lassen sich auf diese Weise ausführen. Eine Desktopflow (Power Automate for desktop) hingegen verfügt über die Aktion Run Excel macro, mit der sich das VBA-Makro einer mit Launch Excel geöffneten Arbeitsmappe genau so ausführen lässt, wie es ist. Wenn Sie nur den Start des Makros automatisieren möchten, ohne dessen VBA-Code zu ändern, ist der Weg über eine Desktopflow die realistische Option.
Ist ein Office-Skript ein vollständiger Ersatz für VBA?
Nein. Office-Skripte funktionieren nur mit Excel und können andere Office-Apps wie Word oder Outlook nicht bedienen. Da ein Skript nur auf die Arbeitsmappe zugreifen kann, sind auch lokaler Dateizugriff und COM/OLE-Integration nicht möglich, und es gibt kein ereignisgesteuertes Modell wie Workbook_Open oder benutzerdefinierte Dialoge mit UserForm. Andererseits lässt sich Verarbeitung, die vollständig innerhalb der Arbeitsmappe bleibt — Formatierung, Aggregation, Übertragung —, in ein Office-Skript umwandeln, das sich dann über Power Automate zeitgesteuert oder durch eine eingehende E-Mail bzw. Formularantwort auslösen lässt. Die zutreffende Sichtweise ist, dass sich die beiden nicht gegenseitig ersetzen, sondern schlicht unterschiedliche Bereiche abdecken.
Welche Lizenz benötige ich, um Office-Skripte zu nutzen?
Eine kommerzielle oder Bildungs-Microsoft-365-Lizenz (Office 365 Business / Business Premium / ProPlus / E1 / E3 / E5 / F3 / A3 / A5) zusammen mit OneDrive for Business. Das Ausführen eines Office-Skripts aus Power Automate heraus erfordert ebenfalls eine geschäftliche Microsoft-365-Lizenz; E1 und F3 können Skripte über Power Automate ausführen, aber nicht die Power-Automate-Integrationsfunktionen innerhalb von Excel selbst nutzen. Das steht im Kontrast zu VBA, das standardmäßig mit der Desktop-Version von Excel ausgeliefert wird und keine zusätzliche Lizenz benötigt — prüfen Sie daher vor einer Migrationsentscheidung die Lizenzierung Ihrer Organisation.
Kann die Automatisierung allein mit Aktionen des Excel Online (Business)-Connectors abgeschlossen werden?
Bei einfacher Verarbeitung ja, aber es gibt einige Grenzwerte zu beachten. Das Hinzufügen, Abrufen, Aktualisieren oder Löschen von Zeilen setzt voraus, dass der Bereich bereits eine Excel-Tabelle (ein ListObject) ist; List rows present in a table liefert standardmäßig nur bis zu 256 Zeilen zurück, für mehr ist Pagination erforderlich. Die Dateigröße ist auf 25 MB begrenzt, eine einzelne Anfrage auf 5 MB, und Schreibvorgänge können bis zu etwa 30 Sekunden benötigen, bis sie sichtbar werden. Eine praktikable Aufteilung besteht darin, den Connector direkt für das Lesen und Schreiben einiger weniger Tabellenzeilen zu verwenden und für Zellformatierung oder alles, was mehrere Blätter umfasst, zu einem Office-Skript zu greifen.

Autorenprofil

Profilseite des Artikelautors.

Go Komura

Geschäftsführer von KomuraSoft LLC

Spezialisiert auf Windows-Softwareentwicklung, technische Beratung und Fehleranalyse, insbesondere bei bestehenden Systemen und schwer reproduzierbaren Störungen.

Zurück zum Blog