Share via


Tutorial: Compartilhar dados e eventos entre as funções personalizadas do Excel e do painel de tarefas

Compartilhe dados globais e envie eventos entre o painel de tarefas e funções personalizadas do suplemento do Excel com um runtime compartilhado.

Compartilhar um estado entre a função personalizada e o código do painel de tarefas

As instruções a seguir mostram como compartilhar uma variável global entre as funções personalizadas e o código do painel de tarefas. Este tutorial pressupõe que você concluiu o tutorial de funções personalizadas do Excel, com uma Função Personalizada do Excel usando um projeto de Runtime Compartilhado usando o tipo de script JavaScript. Use o suplemento que você criou nesse tutorial para concluir as instruções a seguir.

Criar funções personalizadas para obter ou armazenar o estado compartilhado

  1. No código do Visual Studio, abra o arquivo src/functions/functions.js.

  2. Na linha 1, insira o código a seguir na parte superior. Isso inicializará uma variável global chamada sharedState.

    window.sharedState = "empty";
    
  3. Adicione o código a seguir para criar uma função personalizada que armazena valores para a variável 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";
    }
    
  4. Adicione o código a seguir para criar uma função personalizada que obtém o valor atual da variável 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;
    }
    
  5. Salve o arquivo.

Criar controles do painel de tarefas para trabalhar com dados globais

  1. Abra o arquivo src/taskpane/taskpane.html.

  2. Após o elemento de fechamento </main>, adicione o seguinte HTML. O HTML cria duas caixas de texto e botões usados para obter ou armazenar dados globais.

    <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. Antes do elemento </body> fechamento, adicionar o script a seguir. Esse código manipulará os eventos de clique do botão quando o usuário desejar armazenar ou obter os dados globais.

    <script>
      function storeSharedValue() {
        let sharedValue = document.getElementById('storeBox').value;
        window.sharedState = sharedValue;
      }
    
      function getSharedValue() {
        document.getElementById('getBox').value = window.sharedState;
      }
    </script>
    
  4. Salve o arquivo.

  5. Compile o projeto.

    npm run build
    

Experimente compartilhar dados entre as funções personalizadas e o painel de tarefas

  • Inicie o projeto usando o comando a seguir.

    npm run start
    

Após a inicialização do Excel, você pode usar os botões do painel de tarefas para armazenar ou obter os dados compartilhados. Insira =CONTOSO.GETVALUE() em uma célula para que a função personalizada recupere os mesmos dados compartilhados. Ou use =CONTOSO.STOREVALUE("new value") para alterar os dados compartilhados para um novo valor.

Observação

Chamar algumas APIs do Office de funções personalizadas usando um runtime compartilhado é possível. Consulte chamada de APIs do Microsoft Excel a partir de uma função personalizada para mais detalhes.

Confira também