概要
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 のユーザー インターフェイスでも可能です。これを行うには、次の手順を実行します。
-
[表示] メニューの [ツールバー] をポイントし、[ユーザー設定] をクリックします。
-
[ユーザー設定] ダイアログ ボックスで、[コマンド] タブをクリックします。分類の一覧で、[ツール] をクリックします。コマンドの一覧で [COM アドイン] を探し、このコマンドをメニューまたは任意のツール バーにドラッグします。[ユーザー設定] ダイアログ ボックスを閉じます。
-
追加した [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 で使用するには、次の手順を実行します。
-
[ツール] メニューの [アドイン] をクリックします。
-
[アドイン] ダイアログ ボックスで、[オートメーション] をクリックします。登録済みの COM サーバーの一覧で、該当するオートメーション アドインをクリックして、[OK] をクリックします。
-
オートメーション アドインが [アドイン] ダイアログ ボックスに表示されます。[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.