This article discusses troubleshooting issues that are unique to Excel. Please use the feedback tool at the bottom of the page to suggest other issues that can be added to the article.
API limitations when the active workbook switches
Add-ins for Excel are intended to operate on a single workbook at a time. Errors can arise when a workbook that is separate from the one running the add-in gains focus. This only happens when particular methods are in the process of being called when the focus changes.
The following APIs are affected by this workbook switch.
Excel JavaScript API
Error thrown
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
הערה
This only applies to multiple Excel workbooks open on Windows or Mac.
Coauthoring
See Coauthoring in Excel add-ins for patterns to use with events in a coauthoring environment. The article also discusses potential merge conflicts when using certain APIs, such as TableRowCollection.add.
The following code sample shows how to use this temporary binding ID to retrieve the related Binding object. In the sample, an event listener is assigned to a binding. The listener calls the getBindingId method when the onDataChanged event is triggered. The getBindingId method uses the ID of the temporary Binding object to retrieve the Binding object that raised the event.
JavaScript
asyncfunctionrun() {
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();
});
}
asyncfunctiongetBindingId(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`.
});
}
Cell format useStandardHeight and useStandardWidth issues
The useStandardHeight property of CellPropertiesFormat doesn't work properly in Excel on the web. Due to an issue in the Excel on the web UI, setting the useStandardHeight property to true calculates height imprecisely on this platform. For example, a standard height of 14 is modified to 14.25 in Excel on the web.
On all platforms, the useStandardHeight and useStandardWidth properties of CellPropertiesFormat are only intended to be set to true. Setting these properties to false has no effect.
Range getImage method unsupported on Excel for Mac