Office Script: Was es ist, was es kann und warum du es kennen solltest

Für alle, die Excel lieben und VBA kennen.

Was ist Office Script?

Office Script ist Microsofts moderne Automatisierungssprache für Excel im Web. Es basiert auf TypeScript, also auf einer Sprache, die Millionen Entwickler weltweit täglich nutzen. Kurz gesagt: Du schreibst Code direkt im Browser, und Excel führt ihn aus auf jedem Gerät, überall.

Mini-Beispiel: Dein erstes Office Script in drei Zeilen:

// Schreibt "Hallo Welt!" in Zelle A1

function main(workbook: ExcelScript.Workbook) {

  workbook.getActiveWorksheet().getRange("A1").setValue("Hallo Welt!");

}

Das war es. Kein Makro-Sicherheitsdialog, kein VBA-Editor, kein „Makros aktivieren“. Einfach ausführen.

Warum solltest du Office Script nutzen?

Stell dir vor, du hast eine Excel-Datei in SharePoint. Dein Kollege öffnet sie auf dem Mac, deine Chefin auf dem iPad und du arbeitest im Browser. VBA läuft in keinem dieser Szenarien. Office Script schon.

Die wichtigsten Vorteile auf einen Blick:

  • Plattformunabhängig: Läuft im Browser, auf dem Mac, in Teams und auf mobilen Geräten
  • Power Automate Integration: Automatisiere Workflows ohne manuelles Eingreifen z.B. täglich um 6 Uhr morgens
  • Sicher: Keine Makro-Warnungen, kein Sicherheitsrisiko durch externe DLLs
  • Modernes TypeScript: Autocomplete, Fehlererkennung, saubere Syntax, wie in einer echten IDE
  • Wiederverwendbar: Scripts lassen sich als Funktionen aufrufen und in anderen Scripts einbinden
  • Zukunftssicher: Microsoft investiert aktiv in Office Script. VBA bekommt keine neuen Features mehr

Was kann Office Script?

Office Script deckt die wichtigsten Excel-Automatisierungsaufgaben ab. Hier ein Überblick mit konkreten Beispielen:

Zellen lesen und schreiben

// Wert aus Zelle lesen
let wert = workbook.getActiveWorksheet().getRange("B2").getValue();

// Wert in Zelle schreiben
workbook.getActiveWorksheet().getRange("C2").setValue(wert * 1.19); // Brutto berechnen

Tabellen und Bereiche verarbeiten

let worksheet = workbook.getActiveWorksheet();
let tabelle = worksheet.getTable("Produkte");
let daten = tabelle.getRangeBetweenHeaderAndTotal().getValues();

// Alle Zeilen durchlaufen
for (let zeile of daten) {
  // Verarbeitung pro Zeile
}

Formatierungen setzen

let bereich = workbook.getActiveWorksheet().getRange("A1:D1");

// Fettschrift und Hintergrundfarbe
bereich.getFormat().getFont().setBold(true);
bereich.getFormat().getFill().setColor("#4F81BD");

Power Automate Integration

Das ist der echte Game-Changer: Du kannst Office Scripts direkt aus Power Automate aufrufen.
Beispiel: Jeden Morgen um 7 Uhr läuft automatisch dein Power Query-Update, danach schreibt dein Script den Zeitstempel und am Ende wird eine E-Mail mit dem Bericht verschickt, ohne dass jemand etwas anklicken muss.

In dem oberen Beispiel wird das Office Script automatisch zu einer vorgegebenen Zeit/Tag ausgeführt, um den Personalbericht zu aktualisieren. Somit können Arbeiten auf Zeiten ausgelagert werden, in denen niemand auf Arbeit ist. Gerade für Berechnungen/Formatierungsarbeiten, welche sonst erst vorgenommen werden müssen, ist dies Gold wert. Denn so kommt man auf Arbeit und alle notwenigen Aufgaben wurden automatisiert in der Cloud erledigt.

Was kann Office Script nicht?

Ehrlichkeit ist wichtig: Office Script ist kein vollständiger VBA-Ersatz – zumindest noch nicht. Es gibt klare Grenzen, die du kennen solltest:

  • Kein Dateisystem-Zugriff: Du kannst keine lokalen Dateien lesen oder schreiben (z.B. CSV importieren)
  • Keine UserForms: Eigene Dialoge und Formulare sind nicht möglich
  • Keine COM-Objekte: Externe Programme (Outlook, Word, SAP) lassen sich nicht direkt steuern
  • Keine externen DLLs: Eigene Bibliotheken oder .NET-Code können nicht eingebunden werden
  • Nur Excel: Word, PowerPoint oder Access lassen sich nicht automatisieren
  • Nur Excel für das Web (M365): Funktioniert nicht in der Desktop-App ohne M365-Lizenz

Tipp: Für komplexe Desktop-Automatisierungen mit Dateizugriff oder COM-Objekten bleibt VBA die bessere Wahl. Office Script und VBA schließen sich nicht aus, du kannst beide parallel nutzen.

VBA vs. Office Script: Der direkte Vergleich

Du kennst VBA? Dann wirst du Office Script schnell verstehen. Hier siehst du, wie sich die beiden Sprachen gegenüberstehen:

MerkmalVBAOffice Script
SpracheVisual Basic for ApplicationsTypeScript (modernes JavaScript)
PlattformNur Desktop (Windows)Web, Desktop, Mobile, Teams
AutomatisierungMakros lokal ausführenPower Automate Integration
SicherheitMakros oft blockiertSicher, kein Makro-Risiko
LernkurveEigene VBA-SyntaxStandard TypeScript/JS
IDEVBA-EditorCode-Editor in Excel
ZusammenarbeitDatei-basiertCloud-basiert
COM-ObjekteVollständiger ZugriffNicht unterstützt
Externe DLLsMöglichNicht möglich
UserFormsVollständigNicht verfügbar
DateisystemVollständiger ZugriffKein direkter Zugriff

Dasselbe Ziel – zwei Wege

VBA – Zelle formatieren:

' VBA: Zelle A1 fett und blau einfärben
Sub FormatZelle()
  Range("A1").Font.Bold = True
  Range("A1").Interior.Color = RGB(79, 129, 189)
End Sub

Office Script – dasselbe in TypeScript:

// Office Script: Zelle A1 fett und blau einfärben
function main(workbook: ExcelScript.Workbook) {
  let zelle = workbook.getActiveWorksheet().getRange("A1");
  zelle.getFormat().getFont().setBold(true);
  zelle.getFormat().getFill().setColor("#4F81BD");
}

Beide Snippets tun dasselbe. Der Unterschied: Das Office Script läuft auch auf dem Mac, im Browser und kann von Power Automate aufgerufen werden.

Wer, wie ich, von der VBA Programmierung kommt, wird sich umgewöhnen müssen. Man muss ein wenig mehr schreiben. Office Script will es genau haben. VBA hat sich gemerkt wo wir in der Mappe gerade sind. Wenn wir uns auf dem Reiter „Tabelle1“ befinden, mussten wir dies nicht immer explizit erneut schreiben. Bei Office Script jedoch schon. Egal was wir auf dem Reiter „Tabelle1“ machen, in Office Script müssen wir dem Befehl immer wieder sagen das wir den Reiter „Tabelle1“ meinen.

Der aktuell in meinen Augen größte Nachteil liegt aber im Debugging.
VBA kann man eine Schritt für Schritt Ausführung des Codes machen. Man sieht so sehr gut, was der Code macht. Ebenso gibt es Haltemarken, an denen der Code anhält, wenn man sich einen bestimmten Teilbereich genauer ansehen möchte.

Da Office Script aber in der Cloud ausgeführt wird, gibt es sowas da nicht. Man schreibt den Code und führt ihn immer komplett aus. Keine Haltemarken, keine Schritt für Schritt Ausführung. Das ist eine Umgewöhnung. Man muss den Code und die Entwicklung von diesem, anders aufbauen. In größeren Scripts muss man mehr mit Feedbacks im Code selber arbeiten. Ebenso muss man sich angewöhnen, die Scripts so aufzuteilen, das jedes seine Aufgabe hat. Somit kann man dann Teilausführungen testen.

Migration von VBA zu Office Script: So gehst du vor

Du hast bestehende VBA-Makros und willst wechseln? Hier ist mein empfohlener Weg:

  1. Inventur machen: Liste alle VBA-Makros auf und kategorisiere sie (Formatierung, Berechnungen, Datei-Zugriff, COM-Objekte)
  2. Einfache Makros zuerst: Starte mit Formatierungen und Berechnungen – die sind 1:1 übertragbar
  3. Recorder nutzen: Der eingebaute „Aktionen aufzeichnen“-Button in Excel für das Web generiert automatisch Office Script-Code
  4. Komplexe Makros analysieren: Makros mit Dateizugriff oder COM-Objekten bleiben vorerst in VBA
  5. Power Automate einbinden: Ersetze zeitgesteuerte Makros durch Power Automate + Office Script

Wichtig: Du musst nicht alles auf einmal migrieren. VBA und Office Script können in derselben Datei koexistieren.

Tipps für den Einstieg

  • Recorder als Lernhilfe: Zeichne Aktionen auf und schau dir den generierten Code an – perfekt zum Lernen
  • TypeScript lernen lohnt sich: Grundkenntnisse in JavaScript/TypeScript öffnen dir viele Türen (React, Node.js, etc.)
  • Funktionen auslagern: Schreibe wiederverwendbare Hilfsfunktionen (wie die Zeitstempel-Funktion) und baue sie in andere Scripts ein
  • Power Automate früh kennenlernen: Die Kombination Office Script + Power Automate ist der eigentliche Mehrwert
  • Fehlerbehandlung einbauen: Nutze try/catch für robuste Scripts, die auch bei Fehlern sauber abbrechen
  • Kommentare: Kommentiere deinen Code, dein zukünftiges Ich wird es dir danken

Fazit

Office Script ist kein Ersatz für VBA, es ist die Weiterentwicklung. Wer heute mit Excel-Automatisierung anfängt oder bestehende Workflows modernisieren will, sollte Office Script kennen.

Die Stärken liegen klar in der Cloud-Integration, Plattformunabhängigkeit und der Verbindung mit Power Automate. Die Grenzen, kein Dateisystem, keine COM-Objekte, sind real, aber für die meisten modernen Excel-Workflows kein Problem.

Mein Rat: Fang klein an. Nimm ein einfaches VBA-Makro, das du gut kennst, und schreibe es in Office Script um. Du wirst überrascht sein, wie schnell du den Dreh raus hast.

Probiere es aus – der Code-Editor ist nur einen Klick entfernt: Excel → Automatisieren → Neues Script.

Martin Reichelt ist Spezialist für Microsoft-Automatisierung und Verfechter der Citizen Developer Bewegung. Bei XelUp zeigt er, wie man das volle Potenzial von Excel ausschöpft und durch Power Automate effiziente Cloud-Workflows schafft, um wertvolle Lebenszeit im Job zurückzugewinnen.

WordPress Cookie Hinweis von Real Cookie Banner