現在オフラインです。再接続するためにインターネットの接続を待っています

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

概要
この資料では、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) を基に作成したものです。

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

文書番号:823982 - 最終更新日: 04/07/2004 10:11:34 - リビジョン: 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
フィードバック