Учебное руководство: обмен данными и событиями между пользовательскими функциями Excel и областью задач
Общий доступ к глобальным данным и отправка событий между областью задач и пользовательскими функциями надстройки Excel с общей средой выполнения.
Совместное использование состояния между пользовательской функцией и кодом области задач
В приведенных ниже инструкциях показано, как предоставить общий доступ к глобальной переменной для пользовательской функции и кода области задач. В этом руководстве предполагается, что вы завершили работу с руководством по пользовательским функциям Excel с пользовательскими функциями Excel, использующими проект общей среды выполнения с типом скрипта JavaScript. Используйте надстройку, созданную в этом руководстве, чтобы выполнить следующие инструкции.
Создание пользовательских функций для получения или сохранения общего состояния
В Visual Studio Code откройте файл src/functions/functions.js.
В строке 1 в самом верху вставьте следующий код. При этом будет инициализирована глобальная переменная sharedState.
window.sharedState = "empty";
Добавьте следующий код, чтобы создать пользовательскую функцию, которая сохранит значения переменной 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"; }
Добавьте следующий код, чтобы создать пользовательскую функцию, которая получит текущее значение переменной 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; }
Сохраните файл.
Создание элементов управления области задач для работы с глобальными данными
Откройте файл src/taskpane/taskpane.html.
После закрытия элемента
</main>
добавьте следующий HTML-код. С помощью HTML будут созданы два текстовых поля и кнопки для получения и хранения глобальных данных.<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>
Перед закрывающим элементом
</body>
добавьте приведенный ниже сценарий. Этот код обрабатывает события нажатия кнопки, когда пользователь хочет сохранить или получить глобальные данные.<script> function storeSharedValue() { let sharedValue = document.getElementById('storeBox').value; window.sharedState = sharedValue; } function getSharedValue() { document.getElementById('getBox').value = window.sharedState; } </script>
Сохраните файл.
Выполните построение проекта.
npm run build
Обмен данными между пользовательскими функциями и областью задач
Запустите проект, выполнив приведенную ниже команду.
npm run start
После запуска Excel можно использовать кнопки области задач для хранения или получения общих данных. Введите =CONTOSO.GETVALUE()
в ячейку, чтобы пользовательская функция получила те же общие данные. Можно также использовать =CONTOSO.STOREVALUE("new value")
для изменения значения общих данных.
Примечание.
Вызов некоторых API Office из пользовательских функций с помощью общей среды выполнения возможен. Дополнительные сведения см. в статье Вызов API Microsoft Excel из пользовательской функции.
Когда вы будете готовы остановить сервер разработки и удалить надстройку, выполните следующую команду.
npm run stop
См. также
Office Add-ins