[INFO] Excel の COM アドインおよびオートメーション アドイン

概要

Microsoft Excel 2002 では、Component Object Model (COM) アドインの他にオートメーション アドインがサポートされています。この資料では、これら 2 種類のアドインの違いについて説明します。

詳細

COM アドイン


COM アドインを使用すると、開発者は Office 2000、Office XP、Office 2003 アプリケーションの機能をユーザー設定の作業用に拡張できます。COM アドインは通常、ツール バー ボタン、フォーム、ダイアログ ボックスのクリックや、ブックの開閉、ワークシートへのデータの入力など Excel に固有のイベントに対する Excel の応答を自動化するために使用します。COM アドインの関数を、ワークシートのセル数式から直接呼び出すことはできません。


COM アドインはインプロセス COM サーバー (ActiveX DLL) であり、IDTExensibility2 インターフェイスを実装する必要があります。すべての COM アドインで、このインターフェイスの 5 つのメソッド、OnConnection、OnStartupComplete、OnAddinsUpdate、OnBeginShutDown、および OnDisconnection をそれぞれ実装する必要があります。


COM アドインをユーザーのシステムにインストールすると、このアドイン用にレジストリ エントリが作成されます。通常の COM 登録の他に、COM アドインが実行される Office アプリケーションに関しても登録されます。Excel で使用される COM アドインは、次のレジストリ キーに登録されます。

                
HKEY_CURRENT_USER\Software\Microsoft\Office\Excel\Addins\

このキーには、インストールされている COM アドインごとにサブキーが 1 つずつ含まれます。サブキーの名前は COM アドインの ProgID です。COM アドインのサブキーには、COM アドインのフレンドリ名、説明、読み込み方法を説明する値も含まれます。読み込み方法は、Excel へのアドインの読み込み方法の説明であり、起動時に読み込み、次の起動時のみに読み込み、要求に応じて読み込み、読み込まない、のいずれかです。


COM アドインの読み込みおよびアンロードは、Excel のユーザー インターフェイスでも可能です。これを行うには、次の手順を実行します。

  1. [表示] メニューの [ツールバー] をポイントし、[ユーザー設定] をクリックします。

  2. [ユーザー設定] ダイアログ ボックスで、[コマンド] タブをクリックします。分類の一覧で、[ツール] をクリックします。コマンドの一覧で [COM アドイン] を探し、このコマンドをメニューまたは任意のツール バーにドラッグします。[ユーザー設定] ダイアログ ボックスを閉じます。

  3. 追加した [COM アドイン] をクリックして [COM アドイン] ダイアログ ボックスを表示します。このダイアログ ボックスには、システムにインストールされているすべての COM アドインが表示され、現在読み込まれている COM アドインが選択されます。

COM アドインの関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。

238228 [HOWTO] Visual Basic で Office 2000 COM アドインを作成する方法

230689 [SAMPLE] Visual C++ で作成した Office 2000 COM アドインのサンプル Comaddin.exe

詳細については、次のマイクロソフト Web サイトを参照してください。

Office アドイン

http://support.microsoft.com/ofd

オートメーション アドイン


COM アドインの他に、Excel 2002 および Excel 2003 ではオートメーション アドインがサポートされています。オートメーション アドインは COM アドインを基に構築され、オートメーション アドインの関数は Excel ワークシートの数式から呼び出すことができます。COM アドインは、IDTExtensibility2 インターフェイスをサポートするインプロセス COM サーバーである必要がありますが、オートメーション アドインはインプロセス、アウトプロセスのどちらの COM サーバーでもかまいません。また、IDTExtensibility2 の実装も必須ではありません。


オートメーション アドインの関数を Excel で使用するには、次の手順を実行します。

  1. [ツール] メニューの [アドイン] をクリックします。

  2. [アドイン] ダイアログ ボックスで、[オートメーション] をクリックします。登録済みの COM サーバーの一覧で、該当するオートメーション アドインをクリックして、[OK] をクリックします。

  3. オートメーション アドインが [アドイン] ダイアログ ボックスに表示されます。[OK] をクリックして [アドイン] ダイアログ ボックスを閉じます。

[アドイン] ダイアログ ボックスの一覧に項目を追加したときや、一覧にあるアドインをクリアしたとき、Excel では変更内容がレジストリに格納されます。Excel では、まず次のレジストリ設定を使用して、アドイン一覧のオートメーション アドインが読み込まれたかどうかが判断されます。

                
Excel 2002

キー : HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Excel\Options
文字列 : OPENx
サンプル値 : /A "ServerName.ClassName"

Excel 2003

キー : HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Options
文字列 : OPENx
サンプル値 : /A "ServerName.ClassName"

文字列値で使用されている /A スイッチは、Excel 2002 および Excel 2003 で新規に採用されたスイッチであり、オートメーション アドインを特定して読み込むために使用されます。オートメーション アドインはすべて要求に応じて読み込まれます。オートメーション アドインの読み込み方法を変更できる設定はありません。


[アドイン] ダイアログ ボックスにあるオートメーション アドインがクリアされると、そのアドインの ProgID と同じ名前のサブキーが、以下のレジストリ キーに作成されます。

Excel 2002

HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Excel\Add-in Manager

Excel 2003

HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Add-in Manager

このレジストリ設定により、アドイン一覧に追加したオートメーション アドインは、読み込まないと選択された場合であっても、一覧に保持されます。


オートメーション アドインの詳細については、次の「サポート技術情報」 (Microsoft Knowledge Base) を参照してください。

285337 [HOWTO] Excel ワークシート関数用に Visual Basic オートメーション アドインを作成する方法

詳細については、次のマイクロソフト Web サイトを参照してください。

Office アドイン

http://support.microsoft.com/ofd

IDTExtensibility2 を実装するオートメーション アドイン


前述したように、オートメーション アドインでは IDTExtensibility2 を実装する場合がありますが、これは Excel のワークシートからアドインの関数を呼び出すために必須ではありません。オートメーション アドインを、Excel インスタンスを参照するように設定する必要がある場合は、IDTExtensibility2 を実装し、OnConnection の Application パラメータを使用して Excel を自動化することができます。


IDTExtensibility2 を実装するオートメーション アドインは、Excel ユーザー インターフェイスで、[COM アドイン] ダイアログ ボックスと [アドイン] ダイアログ ボックスの両方で読み込むことができます。これらのうち一方のダイアログ ボックスで読み込んだか、両方のダイアログ ボックスで読み込んだかによって、オートメーション アドインの動作は次のように異なります。

  • [アドイン] ダイアログ ボックスのみで読み込んだ場合


    アドインは要求に応じて読み込まれます。アドインの関数は、ワークシートの数式から呼び出すことができます。

  • [COM アドイン] ダイアログ ボックスのみで読み込んだ場合


    アドインは COM アドインとして読み込まれ、読み込み方法はレジストリの設定によって決まります。アドインの関数を、ワークシートの数式から呼び出すことはできません。

  • [COM アドイン] ダイアログ ボックスと [アドイン] ダイアログ ボックスの両方で読み込んだ場合


    アドインの 2 つの異なるインスタンスが読み込まれます。一方のインスタンスは COM アドインとして読み込まれ、もう一方はオートメーション アドインとして読み込まれます。COM アドイン インスタンスでは、レジストリで指定されている読み込み方法が使用され、オートメーション アドインは要求に応じて読み込まれます。この 2 つのインスタンスはそれぞれ独自に動作し、グローバル変数を共有しません。

オートメーション アドインは要求に応じて読み込まれるため、Excel でセル編集モードのときにアドインの読み込み動作が発生することがあります。そのため、IDTExtensibility2 をサポートするオートメーション アドインを開発するときは、アドインを読み込み中に Excel の状態を変更する処理を行わないように注意する必要があります。詳細については、次の「サポート技術情報」 (Microsoft Knowledge Base) を参照してください。

284876 [BUG] オートメーション アドインを読み込むと Excel が異常終了する

(c) Microsoft Corporation 2001, All Rights Reserved. Contributions by Lori B. Turner, Microsoft Corporation.


ヘルプを表示

スキルを磨く
トレーニングの探索
新機能を最初に入手
Microsoft Insider に参加する

この情報は役に立ちましたか?

フィードバックをお送りいただきありがとうございます!

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×