この記事では、Excel 固有の問題のトラブルシューティングについて説明します。 ページの下部にあるフィードバック ツールを使用して、記事に追加できるその他の問題を提案してください。
アクティブなブックが切り替わる場合の API の制限事項
Excel 用アドインは、一度に 1 つのブックを操作することを目的としています。 アドインを実行しているブックとは別のブックがフォーカスを取得すると、エラーが発生する可能性があります。 これは、特定のメソッドがフォーカスが変更されたときに呼び出される処理中にのみ発生します。
次の API は、このブック スイッチの影響を受けます。
| Excel JavaScript API | スローされたエラー |
|---|---|
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 |
注:
これは、Windows または Mac で開いている複数の Excel ブックにのみ適用されます。
コオーサリングとマージの競合
共同編集環境のイベントで使用するパターンについては、「Excel アドインのコオーサリング」を参照してください。 また、 TableRowCollection.addなど、特定の API を使用する場合のマージ競合の可能性についても説明します。
既知の問題
バインド イベントは、一時的な Binding オブジェクトを返します
BindingDataChangedEventArgs.binding と BindingSelectionChangedEventArgs.binding は、イベントを発生させたBinding オブジェクトの ID を含む一時的なBinding オブジェクトを返します。 イベントを発生させたBinding オブジェクトを取得するには、BindingCollection.getItem(id)でこの ID を使用します。
次のコード サンプルは、この一時バインド ID を使用して、関連する Binding オブジェクトを取得する方法を示しています。 このサンプルでは、イベント リスナーがバインドに割り当てられます。 リスナーは、onDataChanged イベントがトリガーされたときに、getBindingId メソッドを呼び出します。
getBindingId メソッドは、一時Binding オブジェクトの ID を使用して、イベントを発生させたBinding オブジェクトを取得します。
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`.
});
}
セル形式の useStandardHeight と useStandardWidth の問題
CellPropertiesFormatの useStandardHeight プロパティがExcel on the webで正しく動作しません。 Excel on the web UI の問題が原因で、useStandardHeight プロパティを true に設定すると、このプラットフォームでは高さが不正確に計算されます。 たとえば、標準の高さ 14 は、Excel on the webでは 14.25 に変更されます。
すべてのプラットフォームで、CellPropertiesFormat の useStandardHeight プロパティと useStandardWidth プロパティは、trueに設定することのみを目的としています。 これらのプロパティを false に設定しても効果はありません。
範囲の戻り文字の制限
Worksheet.getRange(address) メソッドと Worksheet.getRanges(address) メソッドのアドレス文字列の制限は 8192 文字です。 この制限を超えると、アドレス文字列は 8192 文字に切り捨てられます。
関連項目
Office Add-ins