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.bindingBindingSelectionChangedEventArgs.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`. 
    });
}

セルの形式 useStandardHeightuseStandardWidth 問題

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 文字に切り捨てられます。

関連項目