Ich bin ein großer Fan von Script Lab, einer Entwicklungsumgebung zum Prototypen von JavaScript-Anwendungen in Excel, Word und weiteren Office-Anwendungen. Script Lab wurde vom Microsoft Office Extensibility Team entwickelt und steht als Open Source Anwendung bei GitHub bereit.
Zum Einstieg in Script Lab empfehle ich Ihnen die Lektüre meines Artikels Prototyping von Microsoft Office JavaScript Add-Ins mit Script Lab, wo Sie mehr über die Installation und allgemeine Verwendung von Script Lab in Excel erfahren. Schauen Sie auch bei Script Lab selbst vorbei, wo in englischer Sprache weitere Links und Dokumentationen zu finden sind.
Seit Dezember 2017 ist es möglich, in der Insider-Version von Excel mit JavaScript programmierte, benutzerdefinierte Funktionen aufzurufen. Wie solche JavaScript-Funktionen in Excel eingebunden werden können, habe ich in meinem Artikel zur Preview zu benutzerdefinierten JavaScript-Funktionen in Excel 2016 beschrieben.
Die einzelnen dort aufgeführten Schritte sind jetzt zwar nicht allzu kompliziert, benötigen dann aber einen separaten Editor und einen Server zum Testen. Viel schöner ist es, eine Entwicklungs- und Testumgebung direkt in Excel zur Verfügung zu haben und nicht mit verschiedenen Werkzeugen zu hantieren. Genau hier kommt nun Script Lab ins Spiel.
Denn seit circa Anfang Mai wurde vom Microsoft Team ein weiterer Meilenstein in Script Lab erreicht: nämlich die Fähigkeit, benutzerdefinierte Excel-Funktionen in JavaScript direkt in Script Lab entwickeln und ausführen zu können. In diesem Artikel stelle ich diese neuen Features an ein paar einfachen Beispielen vor.
Office Insider werden
Um Script Lab generell verwenden zu können, benötigen Sie im optimalen Fall Excel 2016 in der Abonnement-Version. Beziehen Sie Script Lab aus dem Microsoft Office Store und schon sind Sie einsatzbereit.
Um in Script Lab jedoch benutzerdefinierte Excel-Funktionen in JavaScript erstellen und verwenden zu können, benötigen Sie zurzeit die Insider-Version von Excel für Windows. Die Buildnummer der Insider-Version sollte höher als 9325 sein. Dies, da zum Zeitpunkt der Veröffentlichung dieses Artikels, nur die Insider-Version von Excel die Ausführung von JavaScript-Funktionen erlaubt.
Es gibt verschiedene Möglichkeiten, Office-Insider zu werden. Diese unterscheiden sich darin, welche Abonnement-Version Sie besitzen. Für Office 365 Home, Office 365 Personal oder Office 365 University folgen Sie der Anleitung Office Insider auf der Microsoft Office Website.
Nutzen Sie Office 365 am Arbeitsplatz, kann bzw. muss Ihr Administrator Sie unterstützen. Gegebenenfalls lässt sich das Office Deployment Tool nutzen, wie dies in diesem Artikel How Office 365 commercial customers can get early access to new Office 2016 features beschrieben wird. Da der Artikel nur maschinell in Deutsch übersetzt wurde, habe ich nur das Original verlinkt. Ersetzen Sie in der URL den part en-us durch de-de, um dennoch die deutsche Version abzurufen.
Nach dem Abschluss einer Installation von Office-Insider oder falls Sie bereits Insider waren, überprüfen Sie kurz die Version, indem Sie z.B. in Excel unter dem Menüband-Befehl Datei die Seite zu Ihrem Konto aufrufen.
Im Info-Bereich sollte Office Insider aufgeführt sein und die Buildnummer größer 9325 oder am besten 5-stellig sein. In meinem Fall ist dies hier Build 10211.20004.
In Script Lab die erste benutzerdefinierte Excel-Funktion erstellen
Die Erstellung Ihrer ersten benutzerdefinierten Excel-Funktion mit JavaScript ist in Script Lab kinderleicht: einfach den Anweisungen folgen und fertig.
Wählen Sie Sie nach der Installation von Script Lab im Menüband den Eintrag Script Lab und dort den Eintrag Functions. Nebenbei, Sie werden bei der Verwendung von Script Lab feststellen, dass noch nicht alle Texte zu den neuen Features in Deutsch übersetzt worden sind. Dies wird sicherlich noch in einem der nächsten Updates nachgeholt werden.
Öffnen Sie nun den Code-Editor, indem Sie im Menüband auf Code klicken. Sollte Ihnen im neu geöffneten Aufgabenbereich eine Seite mit Beispiel-Scripten angezeigt werden, klicken Sie auf das Plus-Zeichen, um ein neues Code-Schnipsel anzulegen. Löschen Sie anschließend den Inhalt im Code-Editor. Und kopieren Sie aus dem nun links vom Code-Fenster angezeigten Aufgabenbereich zur Ausführung das Code-Schnipsel zu der benutzerdefinierten Funktion heraus und fügen Sie dieses in den Code-Editor ein. Das sieht dann wie folgt aus.
Sobald Sie den Code in den Editor eingefügt haben, aktiviert sich die Schaltfläche Refresh. Klicken Sie auf die Schaltfläche, um eine Registrierung der benutzerdefinieren Funktion zu veranlassen.
Nach Abschluss des Registrierungsvorgangs wird die neue benutzerdefinierte Funktion im Aufgabenbereich zur Ausführung aufgelistet. Sie ist sogar schon aktiv und Sie können sie in Excel verwenden.
Mit Script Lab erstellte benutzerdefinierte Funktionen erhalten alle das Präfix SCRIPTLAB, gefolgt von dem Namen Ihres Code-Schnipsels. In diesem Fall ein bei der Erstellung eines neuen Schnipsels vergebener Standardname. Am Ende wird die JavaScript-Funktion selbst aufgeführt, die dann in Großbuchstaben erscheint, wie bei Excel-Funktionen üblich.
Im Bereich Details zum Aufgabenbereich für die Ausführung werden alle aktuell registrierten benutzerdefinierten Funktionen nochmals in einer Art Baumstruktur detaillierter visualisiert, z.B. durch die Angabe der Argumente.
Das war’s schon. Sie haben erfolgreich ihre erste benutzerdefinierte Excel-Funktion in JavaScript mit Script Lab erstellt.
Weitere benutzerdefinierte Excel-Funktionen erstellen
Script Lab durchsucht bei jedem Start Ihre einzelnen Code-Schnipsel nach benutzerdefinierten Funktionen – was denn heißt, dass Sie diese z.B. modulweise strukturieren können. Als Module würden Ihnen dann die Codeschnipsel dienen, die Sie passend benennen können.
Angenommen, Sie möchten verschiedene mathematische Berechnungen implementieren und dazu einige Funktionen unter dem Namen MATH gruppieren. Beispielhaft und der Einfachheit halber, werden im nächsten Abschnitt die zwei Funktionen SUMME und PRODUKT erstellt.
Klicken Sie dazu im Code-Editor auf das Hamburger-Menü und legen Sie ein neues Code-Schnipsel an. Löschen Sie den erstellten Beispielcode und benennen Sie das Schnipsel in MATH um.
Der Trick, an dem Script Lab in Ihrem Code eine benutzerdefinierte Funktion erkennt, ist die Kommentarzeile mit dem Inhalt /** @CustomFunction */
in der Zeile vor der Deklaration der Funktion. Die beiden zu implementierenden Funktionen sähen somit wie folgt aus:
/** @CustomFunction */
function summe(x: number, y: number): number {
return x + y;
}
/** @CustomFunction */
function produkt(x: number, y: number): number {
return x * y;
}
Sobald Sie wieder die Ausführung starten, werden die zwei neuen Funktionen registriert und stehen dann Excel direkt zur Verfügung.
Während der Entwicklung kann es vorkommen, dass bei der Ausführung des Codes z.B. der Inhalt von Variablen ausgegeben werden muss, um Berechnungen oder Verarbeitungsschritte zu überprüfen. Wenn Sie im Code zu Ihren Funktionen eine Ausgabe über die Anweisung console.log()
einbauen, werden Ihnen dessen Ergebnisse im Bereich Console innerhalb des Aufgabenbereichs zur Ausführung angezeigt. Dies funktioniert somit so ähnlich wie die Kombination Debug.Print
und dem Direktfenster in VBA.
Fazit
Script Lab vereinfacht deutlich den Einstieg in die Entwicklung benutzerdefinierter Excel-Funktionen mit JavaScript, indem es eine Umgebung zur Verfügung stellt, die sich auf das Wesentliche konzentriert: nämlich das Implementieren und Ausführen von JavaScript-Funktionen in Excel ohne z.B. Excel verlassen oder andere Werkzeuge heranziehen zu müssen.
Happy coding!
- Script Lab im Microsoft Office Store, Englisch
- Script Lab Projektseite bei Github, Englisch
- Office Insider werden – Home, Personal & University, Deutsch
- Office Insider werden – Kommerzielle Versionen, Englisch
- Office Insider werden – Kommerzielle Versionen, Deutsch (maschinell)
- Office Deployment Tool, Englisch