Excel アドインのトラブルシューティング
この記事では、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 アドインのコオーサリング」を参照してください。 また、特定の API (など TableRowCollection.add
) を使用する場合のマージ競合の可能性についても説明します。
既知の問題
バインド イベントは一時オブジェクトを Binding
返します
BindingDataChangedEventArgs.binding と BindingSelectionChangedEventArgs.binding の両方が、イベントを発生させたオブジェクトの Binding
ID を含む一時Binding
オブジェクトを返します。 イベントを発生させたオブジェクトを取得するには、Binding
この ID と をBindingCollection.getItem(id)
使用します。
次のコード サンプルは、この一時バインド ID を使用して関連 Binding
オブジェクトを取得する方法を示しています。 このサンプルでは、イベント リスナーがバインドに割り当てられます。 リスナーは、イベントが getBindingId
トリガーされたときに メソッドを onDataChanged
呼び出します。 メソッドは 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
問題
の useStandardHeight プロパティCellPropertiesFormat
がExcel on the webで正しく機能しません。 Excel on the web UI の問題が原因で、 プロパティを useStandardHeight
に設定するとtrue
、このプラットフォームでは高さが不正確に計算されます。 たとえば、標準の高さ 14 は、Excel on the webでは 14.25 に変更されます。
すべてのプラットフォームで、 の useStandardHeight プロパティと useStandardWidth プロパティ CellPropertiesFormat
は、 に true
設定することのみを目的としています。 これらのプロパティを に false
設定しても効果はありません。
Excel for Macでサポートされていない範囲getImage
メソッド
Range getImage メソッドは現在、Excel for Macではサポートされていません。 現在の状態については、「 OfficeDev/office-js Issue #235 」を参照してください。
範囲の戻り文字の制限
Worksheet.getRange(address) メソッドと Worksheet.getRanges(address) メソッドのアドレス文字列の制限は 8192 文字です。 この制限を超えると、アドレス文字列は 8192 文字に切り捨てられます。
関連項目
Office Add-ins