Compartilhar via


Solução de problemas de suplementos do Excel

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

Limitações de API quando a pasta de trabalho ativa muda

Os suplementos para Excel destinam-se a operar em uma única pasta de trabalho por vez. Erros podem surgir quando uma pasta de trabalho separada daquela que executa o suplemento ganha foco. Isso só acontece quando determinados métodos estão no processo de ser chamado quando o foco é alterado.

As APIs a seguir são afetadas por essa opção de pasta de trabalho.

API JavaScript do Excel Erro gerado
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

Isso só se aplica a várias pastas de trabalho do Excel abertas no Windows ou Mac.

Coautoria

Consulte Coautoria nos suplementos do Excel para que os padrões sejam usados com eventos em um ambiente de coautoria. O artigo também discute possíveis conflitos de mesclagem ao usar determinadas APIs, como TableRowCollection.add.

Problemas Conhecidos

Eventos de associação retornam objetos temporários Binding

BindingDataChangedEventArgs.binding e BindingSelectionChangedEventArgs.binding retornam um objeto temporário Binding que contém a ID do Binding objeto que levantou o evento. Use essa ID com BindingCollection.getItem(id) para recuperar o Binding objeto que levantou o evento.

O exemplo de código a seguir mostra como usar essa ID de associação temporária para recuperar o objeto relacionado Binding . No exemplo, um ouvinte de eventos é atribuído a uma associação. O ouvinte chama o getBindingId método quando o onDataChanged evento é disparado. O getBindingId método usa a ID do objeto temporário Binding para recuperar 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élula

A propriedade useStandardHeight de CellPropertiesFormat não funciona corretamente em Excel na Web. Devido a um problema na interface do usuário 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 essas propriedades como false não tem efeito.

Método range getImage sem suporte em Excel para Mac

No momento, não há suporte para o método Range getImage no Excel para Mac. Consulte OfficeDev/office-js Problema nº 235 para obter o status atual.

Limite de caracteres de retorno de intervalo

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

Veja também