[OFF2003] [HOWTO] Visual Studio .NET で Office 2003 Web コンポーネントのイベントを処理する方法

文書翻訳 文書翻訳
文書番号: 823982 - 対象製品
すべて展開する | すべて折りたたむ

目次

概要

この資料では、Microsoft Office 2003 Web コンポーネントのクラス ラッパーを変更する方法を手順を追って説明します。次に、Microsoft Visual Studio .NET を使用して作成するアプリケーションでイベントを管理するために、クラス ラッパーを再生成する方法について説明します。

デフォルトでは、Visual Studio .NET で生成されたクラス ラッパーで、以下の Office 2003 Web コンポーネントのイベントを処理することはできません。
  • グラフ
  • スプレッドシート
  • ピボットテーブル
これらのコンポーネントのイベントを処理するには、クラス ラッパーのソース コードを変更し、コードを再コンパイルします。

背景

Microsoft Visual Studio .NET は、event インターフェイスを実装する event listener クラスを生成します。この event listener クラスは、Office Web コンポーネント (OWC) に渡されます。OWC は、event インターフェイスを呼び出す代わりに IDispatch インターフェイスの QueryInterface メソッドを呼び出します。しかし、生成されたクラスの IDispatch インターフェイスには、イベントのディスパッチ識別子 (DISPID) は含まれていません。

この問題を解決するには、生成されたクラスに ClassInterfaceType.None 値を使用してマークを付けることにより、クラスではなくインターフェイスの IDispatch が COM の相互運用機能で返されるようにします。IDispatch インターフェイスにはイベントの DISPID が含まれます。

クラス ラッパーを変更して再構築する手順

  1. Visual Studio .NET コマンド プロンプトを起動します。
  2. コマンド プロンプトで以下を実行します。
    1. 次のように、owc11 という名前の新しいディレクトリを作成し、そのディレクトリに移動します。
      md c:\owc11

      cd c:\owc11
    2. 次のように入力し、Microsoft Windows フォーム ラッパーの C# のソース コードを生成します。
      aximp "c:\program files\common files\microsoft shared\web components\11\owc11.dll" /source
    3. 生成されたアセンブリの AxOWC11.dll を削除します。
      del c:\owc11\axowc11.dll
  3. テキスト エディタ (メモ帳など) で C:\OWC11\AxOWC11.cs を開きます。
  4. 以下の例のように、グラフ コンポーネント、スプレッドシート コンポーネント、ピボットテーブル コンポーネントに対して生成されたクラスにそれぞれ [ToolboxItem(true)] を追加します。

    グラフ コンポーネント
     [System.ComponentModel.ToolboxItem(true)] 
     public class AxChartSpace : System.Windows.Forms.AxHost { 
      	... 
     } 
    スプレッドシート コンポーネント
     [System.ComponentModel.ToolboxItem(true)] 
     public class AxSpreadsheet : System.Windows.Forms.AxHost {
     	 ... 
     } 
    ピボットテーブル コンポーネント
     [System.ComponentModel.ToolboxItem(true)] 
     public class AxPivotTable : System.Windows.Forms.AxHost {
     	 ... 
     } 
  5. 以下の例のように、イベント クラスを ClassInterfaceType.None としてマークを付けます。

    グラフ コンポーネント
     [System.Runtime.InteropServices.ClassInterface( 
      System.Runtime.InteropServices.ClassInterfaceType.None)] 
     public class AxChartSpaceEventMulticaster : OWC11.IChartEvents {
     	 ...
      } 
    スプレッドシート コンポーネント
     [System.Runtime.InteropServices.ClassInterface( 
      System.Runtime.InteropServices.ClassInterfaceType.None)]
     public class AxSpreadsheetEventMulticaster : OWC11.ISpreadsheetEventSink {
     	 ...
     } 
    ピボットテーブル コンポーネント
     [System.Runtime.InteropServices.ClassInterface( 
      System.Runtime.InteropServices.ClassInterfaceType.None)] 
     public class AxPivotTableEventMulticaster : OWC11.IPivotControlEvents {
     	 ... 
     } 
  6. 変更を AxOWC11.cs に保存します。
  7. Visual Studio .NET のコマンド プロンプトで以下を行います。
    1. 次のように、C:\Program Files\Microsoft.NET\Primary Interop Assemblies を LIB 環境変数に追加します。
      set lib=c:\program files\microsoft.net\primary interop assemblies;%path%
    2. Microsoft Office 2003 プライマリ相互運用機能アセンブリがインストールされている GAC から Microsoft.Office.Interop.OWC11.dll と MSComCtl.dll をコピーします。
      copy %windir%\assembly\GAC\Microsoft.Office.Interop.Owc11\11.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Owc11.dll

      copy %windir%\assembly\GAC\mscomctl\10.0.4504.0__31bf3856ad364e35\mscomctl.dll
    3. ソース ファイルの AxOWC11.cs をコンパイルします。
      csc /t:library /r:microsoft.office.interop.owc11.dll /r:adodb.dll /r:msdatasrc.dll /r:mscomctl.dll axowc11.cs
      : 次の CS0108 エラー メッセージが表示されます。
      キーワード new は 'メンバ名' で、継承されたメンバ 'メンバ名' を隠すために必要です。
      このエラーは無視しても差し支えありません。
  8. Visual Studio .NET を起動します。
  9. 新しくコンパイルされた [AxOWC11.dll] を [ツールボックス] に追加します。
    1. [ツール] メニューの [ツールボックスのカスタマイズ] (Visual Studio .NET 2002) または [ツールボックス アイテムの追加と削除] (Visual Studio .NET 2003) をクリックし、[.NET Framework コンポーネント] タブをクリックします。
    2. [NET Framework コンポーネント] タブの [参照] をクリックします。
    3. [ファイル名] ボックスに c:\owc11\axowc11.dll と入力します。[開く] をクリックします。
    4. [OK] をクリックして、[ツールボックスのカスタマイズ] ダイアログ ボックスを閉じます。
新しい Microsoft Visual Basic .NET プロジェクトまたは新しい Microsoft Visual C# .NET プロジェクトを作成すると、[ツールボックス] の [全般] タブにあるコントロールの一覧に、[AxChartSpace] コントロール、[AxPivotTable] コントロール、および [AxSpreadsheet] コントロールが含まれています。これで、これらのコンポーネントをフォームに追加することができます。

関連情報

Visual Studio .NET を使用しての Office XP Web コンポーネントのイベントの管理の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) を参照してください。
328275 HOW TO: Handle Events for the Office Web Components in Visual Studio .NET

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 823982 (最終更新日 2003-09-17) を基に作成したものです。

この資料に含まれているサンプル コード/プログラムは英語版を前提に書かれたものをありのままに記述しており、日本語環境での動作は確認されておりません。

プロパティ

文書番号: 823982 - 最終更新日: 2004年4月7日 - リビジョン: 1.1
この資料は以下の製品について記述したものです。
  • Microsoft Office 2003 Web Components
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
キーワード:?
kbpia kbofficewebspread kbofficewebpivot kbofficewebchart kbhowto KB823982
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com