次の方法で共有


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 アドインのコオーサリング」を参照してください。 また、 TableRowCollection.addなど、特定の API を使用する場合のマージ競合の可能性についても説明します。

既知の問題

バインド イベントは、一時的な Binding オブジェクトを返します

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

セル形式の useStandardHeightuseStandardWidth の問題

CellPropertiesFormatuseStandardHeight プロパティがExcel on the webで正しく動作しません。 Excel on the web UI の問題が原因で、useStandardHeight プロパティを true に設定すると、このプラットフォームでは高さが不正確に計算されます。 たとえば、標準の高さ 14 は、Excel on the webでは 14.25 に変更されます。

すべてのプラットフォームで、CellPropertiesFormatuseStandardHeight プロパティと useStandardWidth プロパティは、trueに設定することのみを目的としています。 これらのプロパティを false に設定しても効果はありません。

範囲の戻り文字の制限

Worksheet.getRange(address) メソッドと Worksheet.getRanges(address) メソッドのアドレス文字列の制限は 8192 文字です。 この制限を超えると、アドレス文字列は 8192 文字に切り捨てられます。

関連項目