Tutorial: compartir datos y eventos entre funciones personalizadas y el panel de tareas de Excel
Comparta datos globales y envíe eventos entre el panel de tareas y las funciones personalizadas del complemento de Excel con un entorno de ejecución compartido.
Compartir un estado entre la función personalizada y el código del panel de tareas
Las siguientes instrucciones muestran cómo compartir una variable global entre el código del panel de tareas y la función personalizada. En este tutorial se da por supuesto que ha completado el tutorial de funciones personalizadas de Excel, con una función personalizada de Excel mediante un proyecto en tiempo de ejecución compartido mediante el tipo de script JavaScript. Use el complemento que creó en ese tutorial para completar las instrucciones siguientes.
Creación de funciones personalizadas para obtener o almacenar el estado compartido
En Visual Studio Code, abra el archivo src/functions/functions.js.
En la línea 1, inserte el código siguiente en la parte superior. Se iniciará una variable global llamada sharedState.
window.sharedState = "empty";
Agregue el siguiente código para crear una función personalizada que almacene valores en 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"; }
Agregue el siguiente código para crear una función personalizada que obtenga el valor actual 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; }
Guarde el archivo.
Creación de controles del panel de tareas para trabajar con datos globales
Abra el archivosrc/taskpane/taskpane.html.
Después del elemento
</main>
de cierre, agregue el siguiente código HTML. Este HTML crea dos cuadros de texto con sus respectivos botones para obtener o almacenar datos 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>
Antes del elemento de cierre
</body>
agregue el script siguiente. Este código controlará los eventos de clic de botón cuando el usuario quiera almacenar u obtener datos globales.<script> function storeSharedValue() { let sharedValue = document.getElementById('storeBox').value; window.sharedState = sharedValue; } function getSharedValue() { document.getElementById('getBox').value = window.sharedState; } </script>
Guarde el archivo.
Cree el proyecto.
npm run build
Probar el uso compartido de datos entre las funciones personalizadas y el panel de tareas
Inicie el proyecto con el comando siguiente.
npm run start
Cuando se inicie Excel, puede usar los botones del panel de tareas para almacenar u obtener datos compartidos. Escriba =CONTOSO.GETVALUE()
en una celda para que la función personalizada recupere los mismos datos compartidos. También puede usar =CONTOSO.STOREVALUE("new value")
para cambiar los datos compartidos a un nuevo valor.
Nota:
Es posible llamar a algunas API de Office desde funciones personalizadas mediante un entorno de ejecución compartido. Para obtener más información, vea Llamar a las API de Microsoft Excel desde una función personalizada.
Cuando esté listo para detener el servidor de desarrollo y desinstalar el complemento, ejecute el siguiente comando.
npm run stop