XLL ユーザー定義関数を使用してカスタム関数を拡張する

注:

XLL アドインは、ファイル拡張子 が .xll の Excel アドイン ファイルです。 XLL ファイルは、Excel でのみ開くことができるダイナミック リンク ライブラリ (DLL) ファイルの一種です。 XLL アドイン ファイルは C または C++ で記述する必要があります。 詳細については、「 Excel XLLs の開発」を 参照してください。

既存の Excel XLL アドインがある場合は、Excel JavaScript API を使用して同等のカスタム関数アドインを構築し、ソリューション機能を Excel on the web や Mac などの他のプラットフォームに拡張できます。 ただし、Excel JavaScript API アドインには、XLL アドインで使用できる機能がすべて揃っているわけではありません。ソリューションが使用する機能によっては、XLL アドインは Excel JavaScript API アドインよりも Windows 上の Excel で優れたエクスペリエンスを提供する場合があります。

重要

同等のアドイン機能は、次のプラットフォームとアプリケーションでサポートされています。 COM アドインは他のどのプラットフォームにもインストールできないため、これらのプラットフォームでは、 EquivalentAddinsこの記事で後述するマニフェスト要素は無視されます。

  • Excel、Word、PowerPoint on Windows (バージョン 1904 以降)
  • サポートされている Exchange サーバーのバージョンに対する Outlook on Windows (バージョン 2102 以降)
    • Exchange Online
    • Exchange 2019 累積的な更新プログラム 10 以降 (KB5003612)
    • Exchange 2016 累積的な更新プログラム 21 以降 (KB5003611)

マニフェストで同等の XLL を指定する

既存の XLL アドインとの互換性を有効にするには、Excel JavaScript API アドインのマニフェストで同等の XLL アドインを特定します。 Excel では、Excel JavaScript API アドインのカスタム関数ではなく、Windows で実行するときに XLL アドイン関数が使用されます。

カスタム関数に対応する XLL アドインを設定するには、XLL ファイルの を FileName 指定します。 ユーザーが XLL ファイルから関数を含むブックを開くと、Excel によって関数が互換性のある関数に変換されます。 その後、ブックは Windows 上の Excel で開いたときに XLL ファイルを使用しますが、Web または Mac で開くと、Excel JavaScript API アドインのカスタム関数が引き続き使用されます。

次の例は、Excel JavaScript API アドイン マニフェスト ファイルで、COM アドインと XLL アドインの両方を同等のものとして指定する方法を示しています。 多くの場合、両方を指定します。 完成度を高める目的で、この例では両方の等価物をコンテキストで示します。 これらはそれぞれ と によってProgIdFileName識別されます。 要素は EquivalentAddins 、終了 VersionOverrides タグの直前に配置する必要があります。 COM アドインの互換性の詳細については、「 Office アドインを既存の COM アドインと互換性のあるものにする」を参照してください。

<VersionOverrides>
  ...
  <EquivalentAddins>
    <EquivalentAddin>
      <ProgId>ContosoCOMAddin</ProgId>
      <Type>COM</Type>
    </EquivalentAddin>

    <EquivalentAddin>
      <FileName>contosofunctions.xll</FileName>
      <Type>XLL</Type>
    </EquivalentAddin>
  </EquivalentAddins>
</VersionOverrides>

注:

Excel JavaScript API アドインがカスタム関数を XLL アドインと互換性があると宣言した場合、後でマニフェストを変更すると、ファイル形式が変更されるため、ユーザーのブックが破損する可能性があります。

XLL 互換関数のカスタム関数の動作

アドインの XLL 関数は、スプレッドシートを開いて同等のアドインを使用できる場合に XLL 互換のカスタム関数に変換されます。 次の保存では、XLL 関数は互換性のあるモードでファイルに書き込まれ、XLL アドインと Excel JavaScript API アドインのカスタム関数の両方で動作します (XLL でサポートされていないプラットフォームの場合)。

次の表では、XLL ユーザー定義関数、XLL 互換カスタム関数、Excel JavaScript API アドインカスタム関数の機能を比較します。

XLL ユーザー定義関数 XLL 互換のカスタム関数 Excel JavaScript API アドインのカスタム関数
サポートされるプラットフォーム Windows Windows、macOS、Web ブラウザー Windows、macOS、Web ブラウザー
サポートされているファイル形式 XLSX、XLSB、XLSM、XLS XLSX、XLSB、XLSM XLSX、XLSB、XLSM
数式オートコンプリート いいえ はい はい
ストリーミング xlfRTD と XLL コールバックを介して可能です。 はい はい
関数のローカライズ いいえ いいえ。 名前と ID は、既存の XLL の関数と一致している必要があります。 はい
揮発性関数 はい はい はい
マルチスレッド再計算のサポート はい はい はい
計算動作 UI なし。 Excel は、計算中に応答しない可能性があります。 ユーザーには #BUSY が表示されます。 結果が返されるまでです。 ユーザーには #BUSY が表示されます。 結果が返されるまでです。
要件セット 該当なし CustomFunctions 1.1 以降 CustomFunctions 1.1 以降

関連項目