Tutoriel : Partager des données et des événements entre des fonctions personnalisées Excel et le volet Office
Partagez des données globales et envoyez des événements entre le volet Office et les fonctions personnalisées de votre complément Excel avec un runtime partagé.
Partager un état entre la fonction personnalisée et le code du volet Office
Les instructions suivantes montrent comment partager une variable globale entre une fonction personnalisée et du code du volet Office. Ce didacticiel part du principe que vous avez terminé le didacticiel fonctions personnalisées Excel, avec un Excel Custom Functions utilisant un projet de runtime partagé utilisant le type de script JavaScript. Utilisez le complément que vous avez créé dans ce didacticiel pour suivre les instructions suivantes.
Créer des fonctions personnalisées pour obtenir ou stocker l’état partagé
Dans Visual Studio Code, ouvrez le fichier src/functions/functions.js.
Sur la ligne 1, tout en haut, insérez le code suivant. Cette opération initialise une variable globale nommée sharedState.
window.sharedState = "empty";
Ajoutez le code suivant pour créer une fonction personnalisée qui stocke des valeurs dans la variable sharedState.
/** * 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"; }
Ajoutez le code suivant pour créer une fonction personnalisée qui obtient la valeur actuelle de la variable sharedState.
/** * 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; }
Enregistrez le fichier.
Créer des contrôles du volet Office pour utiliser des données globales
Ouvrez le fichier src/taskpane/taskpane.html.
Après l’élément de fermeture
</main>
, ajoutez le code HTML suivant. Le code HTML crée deux zones de texte et des boutons permettant d’obtenir ou de stocker des données globales.<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>
Avant l’élément de fermeture
</body>
, ajoutez le script suivant. Ce code gère les événements de clic de bouton quand l’utilisateur souhaite stocker ou obtenir des données globales.<script> function storeSharedValue() { let sharedValue = document.getElementById('storeBox').value; window.sharedState = sharedValue; } function getSharedValue() { document.getElementById('getBox').value = window.sharedState; } </script>
Enregistrez le fichier.
Créez le projet.
npm run build
Essayer de partager des données entre les fonctions personnalisées et le volet Office
Démarrez le projet à l’aide de la commande suivante.
npm run start
Une fois Excel démarré, vous pouvez utiliser les boutons du volet Office pour stocker ou obtenir des données partagées. Entrez =CONTOSO.GETVALUE()
dans une cellule pour que la fonction personnalisée extraie les mêmes données partagées. Vous pouvez également utiliser =CONTOSO.STOREVALUE("new value")
pour remplacer les données partagées par une nouvelle valeur.
Remarque
L’appel de certaines API Office à partir de fonctions personnalisées à l’aide d’un runtime partagé est possible. Pour plus d’informations, consultez Appeler les API Microsoft Excel à partir d’une fonction personnalisée.
Lorsque vous êtes prêt à arrêter le serveur de développement et à désinstaller le complément, exécutez la commande suivante.
npm run stop