(C) 2009 - 2021 by Mourad Louha · Alle Rechte vorbehalten

Benutzerdefinierte Excel-Funktionen in JavaScript mit Script Lab erstellen

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.

Script Lab Add-In

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.

Excel Insider-Version

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.

Einführung zu den Excel JavaScript-Funktionen

Ö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.

Code-Editor mit JavaScript-Funktion

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.

JavaScript-Funktion ausführen

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.

Details zu den JavaScript-Funktionen

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.

Umbenennen eines Code-Schnipsels

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.

Zwei JavaScript-Funktionen testen

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!

 
Comments

No comments yet.