Compartilhar via


Solucionar problemas de suplementos do Excel

Este artigo aborda problemas de resolução de problemas exclusivos do Excel. Utilize a ferramenta de comentários na parte inferior da página para sugerir outros problemas que podem ser adicionados ao artigo.

Limitações da API quando o livro ativo muda

Os suplementos do Excel destinam-se a funcionar num único livro de cada vez. Podem ocorrer erros quando um livro separado do que está a executar o suplemento ganha foco. Isto só acontece quando determinados métodos estão a ser chamados quando o foco muda.

As seguintes APIs são afetadas por este comutador de livro.

API JavaScript do Excel Erro emitido
Chart.activate GeneralException
Range.select GeneralException
Table.clearFilters GeneralException
Workbook.getActiveCell InvalidSelection
Workbook.getSelectedRange InvalidSelection
Workbook.getSelectedRanges InvalidSelection
Worksheet.activate GeneralException
Worksheet.delete InvalidSelection
Worksheet.gridlines GeneralException
Worksheet.showHeadings GeneralException
WorksheetCollection.add GeneralException
WorksheetFreezePanes.freezeAt GeneralException
WorksheetFreezePanes.freezeColumns GeneralException
WorksheetFreezePanes.freezeRows GeneralException
WorksheetFreezePanes.getLocationOrNullObject GeneralException
WorksheetFreezePanes.unfreeze GeneralException

Observação

Isto aplica-se apenas a vários livros do Excel abertos no Windows ou Mac.

conflitos de Coautoria e intercalação

Veja Coautoria em suplementos do Excel para obter padrões a utilizar com eventos num ambiente de cocriação. O artigo também aborda potenciais conflitos de intercalação ao utilizar determinadas APIs, como TableRowCollection.add.

Problemas conhecidos

Os eventos de enlace devolvem objetos temporários Binding

Tanto BindingDataChangedEventArgs.binding como BindingSelectionChangedEventArgs.binding devolvem um objeto temporário Binding que contém o ID do Binding objeto que levantou o evento. Utilize este ID com BindingCollection.getItem(id) para obter o Binding objeto que levantou o evento.

O seguinte exemplo de código mostra como utilizar este ID de enlace temporário para obter o objeto relacionado Binding . No exemplo, é atribuído um serviço de escuta de eventos a um enlace. O serviço de escuta chama o getBindingId método quando o evento é acionado onDataChanged . O getBindingId método utiliza o ID do objeto temporário Binding para obter o Binding objeto que levantou o evento.

async function run() {
    await Excel.run(async (context) => {
        // Retrieve your binding.
        let binding = context.workbook.bindings.getItemAt(0);
    
        await context.sync();
    
        // Register an event listener to detect changes to your binding
        // and then trigger the `getBindingId` method when the data changes. 
        binding.onDataChanged.add(getBindingId);
        await context.sync();
    });
}

async function getBindingId(eventArgs) {
    await Excel.run(async (context) => {
        // Get the temporary binding object and load its ID. 
        let tempBindingObject = eventArgs.binding;
        tempBindingObject.load("id");

        // Use the temporary binding object's ID to retrieve the original binding object. 
        let originalBindingObject = context.workbook.bindings.getItem(tempBindingObject.id);

        // You now have the binding object that raised the event: `originalBindingObject`. 
    });
}

Formato useStandardHeight e useStandardWidth problemas de células

A propriedade useStandardHeight de CellPropertiesFormat não funciona corretamente no Excel na Web. Devido a um problema na IU do Excel na Web, definir a useStandardHeight propriedade para calcular a true altura de forma imprecisa nesta plataforma. Por exemplo, uma altura padrão de 14 é modificada para 14,25 em Excel na Web.

Em todas as plataformas, as propriedades useStandardHeight e useStandardWidth de CellPropertiesFormat destinam-se apenas a ser definidas como true. Definir estas propriedades como false não tem qualquer efeito.

Limite de carateres de retorno do intervalo

Os métodos Worksheet.getRange(address) e Worksheet.getRanges(address) têm um limite de cadeia de endereço de 8192 carateres. Quando este limite é excedido, a cadeia de endereço é truncada para 8192 carateres.

Veja também