Tutorial: Daten und Ereignisse zwischen benutzerdefinierten Excel-Funktionen und dem Aufgabenbereich freigeben

Geben Sie globale Daten frei, und senden Sie Ereignisse zwischen dem Aufgabenbereich und benutzerdefinierten Funktionen Ihres Excel-Add-Ins mit einer freigegebenen Laufzeit.

Freigeben eines Zustands zwischen benutzerdefinierter Funktion und Aufgabenbereichcode

In den folgenden Anweisungen wird gezeigt, wie Sie eine globale Variable zwischen der benutzerdefinierten Funktion und dem Code des Aufgabenbereichs freigeben. In diesem Tutorial wird davon ausgegangen, dass Sie das Tutorial zu benutzerdefinierten Excel-Funktionen mit einem Freigegebenen Runtime-Projekt mit dem Skripttyp JavaScript abgeschlossen haben. Verwenden Sie das Add-In, das Sie in diesem Tutorial erstellt haben, um die folgenden Anweisungen auszuführen.

Erstellen benutzerdefinierter Funktionen zum Abrufen oder Speichern des freigegebenen Status

  1. Öffnen Sie in Visual Studio Code die Datei src/functions/functions.js.

  2. Fügen Sie in Zeile 1 ganz oben den folgenden Code ein. Damit wird eine globale Variable namens sharedState initialisiert.

    window.sharedState = "empty";
    
  3. Fügen Sie den folgenden Code hinzu, um eine benutzerdefinierte Funktion zu erstellen, die Werte in der sharedState-Variablen speichert.

    /**
     * Saves a string value to shared state with the task pane
     * @customfunction STOREVALUE
     * @param {string} value String to write to shared state with task pane.
     * @return {string} A success value
     */
    function storeValue(sharedValue) {
      window.sharedState = sharedValue;
      return "value stored";
    }
    
  4. Fügen Sie den folgenden Code hinzu, um eine benutzerdefinierte Funktion zu erstellen, die den aktuellen Wert der sharedState-Variablen abruft.

    /**
     * Gets a string value from shared state with the task pane
     * @customfunction GETVALUE
     * @returns {string} String value of the shared state with task pane.
     */
    function getValue() {
      return window.sharedState;
    }
    
  5. Speichern Sie die Datei.

Erstellen von Aufgabenbereich-Steuerelementen für die Interaktion mit globalen Daten

  1. Öffnen Sie die Datei src/taskpane/taskpane.html.

  2. Fügen Sie den folgenden HTML-Code hinter dem schließenden </main>-Element hinzu. Der HTML-Code erstellt zwei Textfelder und Schaltflächen, die zum Abrufen oder Speichern globaler Daten verwendet werden.

    <ol>
      <li>
        Enter a value to send to the custom function and select
        <strong>Store</strong>.
      </li>
      <li>
        Enter <strong>=CONTOSO.GETVALUE()</strong> into a cell to retrieve it.
      </li>
      <li>
        To send data to the task pane, in a cell, enter
        <strong>=CONTOSO.STOREVALUE("new value")</strong>
      </li>
      <li>Select <strong>Get</strong> to display the value in the task pane.</li>
    </ol>
    
    <p>Store new value to shared state</p>
    <div>
      <input type="text" id="storeBox" />
      <button onclick="storeSharedValue()">Store</button>
    </div>
    
    <p>Get shared state value</p>
    <div>
      <input type="text" id="getBox" />
      <button onclick="getSharedValue()">Get</button>
    </div>
    
  3. Fügen Sie vor dem schließenden </body>-Element das folgende Skript hinzu. Dieser Code behandelt die Click-Ereignisse der Schaltfläche, wenn der Benutzer globale Daten speichert oder abruft.

    <script>
      function storeSharedValue() {
        let sharedValue = document.getElementById('storeBox').value;
        window.sharedState = sharedValue;
      }
    
      function getSharedValue() {
        document.getElementById('getBox').value = window.sharedState;
      }
    </script>
    
  4. Speichern Sie die Datei.

  5. Erstellen Sie das Projekt.

    npm run build
    

Versuchen Sie, Daten zwischen den benutzerdefinierten Funktionen und dem Aufgabenbereich freizugeben.

  • Starten Sie das Projekt mit dem folgenden Befehl.

    npm run start
    

Sobald Excel gestartet wird, können Sie die Schaltflächen im Aufgabenbereich zum Speichern oder Abrufen freigegebener Daten verwenden. Geben Sie =CONTOSO.GETVALUE() in eine Zelle ein, damit die benutzerdefinierte Funktion dieselben freigegebenen Daten abruft. Oder verwenden Sie =CONTOSO.STOREVALUE("new value"), um die freigegebenen Daten in einen neuen Wert zu ändern.

Hinweis

Das Aufrufen einiger Office-APIs aus benutzerdefinierten Funktionen mithilfe einer freigegebenen Runtime ist möglich. Mehr dazu finden Sie unter Aufrufen von Microsoft Excel-APIs aus einer benutzerdefinierten Funktion.

Wenn Sie bereit sind, den Entwicklungsserver zu beenden und das Add-In zu deinstallieren, führen Sie den folgenden Befehl aus.

npm run stop

Siehe auch