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.