Solución de problemas de complementos de Excel
En este artículo se describe la solución de problemas que son únicos para Excel. Use la herramienta de comentarios de la parte inferior de la página para sugerir otros problemas que se pueden agregar al artículo.
Limitaciones de API cuando cambia el libro activo
Los complementos para Excel están diseñados para funcionar en un solo libro a la vez. Los errores pueden surgir cuando un libro que es independiente del que ejecuta el complemento obtiene el foco. Esto solo ocurre cuando determinados métodos están en proceso de llamada cuando cambia el foco.
Este modificador de libro afecta a las siguientes API.
API de JavaScript de Excel | Error generado |
---|---|
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 |
Nota:
Esto solo se aplica a varios libros de Excel abiertos en Windows o Mac.
Coautoría
Vea Coautoría en complementos de Excel para ver los patrones que se usan con eventos en un entorno de coautoría. En el artículo también se describen los posibles conflictos de combinación al usar ciertas API, como TableRowCollection.add
.
Problemas conocidos
Los eventos de enlace devuelven objetos temporales Binding
Tanto BindingDataChangedEventArgs.binding comoBindingSelectionChangedEventArgs.binding devuelven un objeto temporal Binding
que contiene el identificador del Binding
objeto que generó el evento. Use este identificador con BindingCollection.getItem(id)
para recuperar el Binding
objeto que generó el evento.
En el ejemplo de código siguiente se muestra cómo usar este identificador de enlace temporal para recuperar el objeto relacionado Binding
. En el ejemplo, se asigna un agente de escucha de eventos a un enlace. El agente de escucha llama al getBindingId
método cuando se desencadena el onDataChanged
evento. El getBindingId
método usa el identificador del objeto temporal Binding
para recuperar el Binding
objeto que generó el 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`.
});
}
Problemas y useStandardWidth
formato useStandardHeight
de celda
La propiedad useStandardHeight de CellPropertiesFormat
no funciona correctamente en Excel en la Web. Debido a un problema en la interfaz de usuario de Excel en la Web, establecer la propiedad para true
calcular el useStandardHeight
alto de forma imprecisa en esta plataforma. Por ejemplo, un alto estándar de 14 se modifica a 14,25 en Excel en la Web.
En todas las plataformas, las propiedades useStandardHeight y useStandardWidth de CellPropertiesFormat
solo están diseñadas para establecerse en true
. Establecer estas propiedades false
en no tiene ningún efecto.
Método range getImage
no admitido en Excel para Mac
El método Range getImage no se admite actualmente en Excel para Mac. Consulte OfficeDev/office-js Issue #235 (Problema de OfficeDev/office-js n.º 235 ) para obtener el estado actual.
Límite de caracteres devueltos por intervalo
Los métodos Worksheet.getRange(address) y Worksheet.getRanges(address) tienen un límite de cadena de dirección de 8192 caracteres. Cuando se supera este límite, la cadena de dirección se trunca a 8192 caracteres.