Excelイベントの拾う方法


じゅん  2008-02-14 10:33:40  No: 144424  IP: 192.*.*.*

VB2003で開発しております。
Excelを参照設定せつずにExcelのイベントを拾うにはどうすればいいのでしょうか?

AddHandlerを使用してみたのですがうまくいきません。

    Private ObjExcel As Object
    Private ObjBook As Object

    ObjExcel = CreateObject("Excel.Application")
    ObjBook = ObjExcel.Workbooks.Add
    AddHandler ObjBook.SheetActivate, AddressOf ExcelBook_SheetActivateEvt

    Private Sub ExcelBook_SheetActivateEvt(ByVal Sh As Object)
    '---処理
    End Sub

編集 削除
やじゅ  2008-02-14 12:58:13  No: 144425  IP: 192.*.*.*

出来るのかは不明

Excel プライマリ相互運用機能アセンブリ リファレンス
ApplicationClass.SheetActivate イベント
このイベントは、.NET Framework インフラストラクチャをサポートします。コードから直接使用するためのものではありません。 
名前空間: Microsoft.Office.Interop.Excel
アセンブリ: Microsoft.Office.Interop.Excel (microsoft.office.interop.excel.dll 内)

WithEvents applicationClass1 As ApplicationClass
Function applicationClass1_SheetActivate(Sh As Object) As Void
    Handles applicationClass1.SheetActivate
End Function

Public Overridable Event SheetActivate As AppEvents_SheetActivateEventHandler

http://msdn2.microsoft.com/ja-jp/library/microsoft.office.interop.excel.applicationclass.sheetactivate(VS.80).aspx

編集 削除
魔界の仮面弁士  2008-02-14 17:19:01  No: 144426  IP: 192.*.*.*

System.Runtime.InteropServices.ComTypes 名前空間を使って

1. 対象オブジェクト(Excel.Application や Excel.Workbook等) を
  IConnectionPointContainerインターフェイス型の変数に代入。

2. IConnectionPointContainer.FindConnectionPoint または、 
  IConnectionPointContainer.EnumConnectionPoints を使って 
  IConnectionPoint インターフェイスを取得。 

3. イベントコールバックを受け取るためのオブジェクトを用意し、
  それを IConnectionPoint.Advise で、イベントの割り当て完了。

4. アプリ終了時など、イベントが必要なくなった時点で、
  IConnectionPoint.Unadvise で割り当て解除し、不要になった
  各種 COM オブジェクトを Marshal.ReleaseComObject する。


…とすればできそうな気がするのですが、実際に試した事は無いので
保証はできません。m(_ _)m

編集 削除
魔界の仮面弁士  2008-02-14 21:14:36  No: 144427  IP: 192.*.*.*

> VB2003で開発しております。
見落としていました…。

.NET 1.1 の場合は、System.Runtime.InteropServices.ComTypes 名前空間の
IConnectionPointContainer インターフェイスと
IConnectionPoint インターフェイスの代わりに、
System.Runtime.InteropServices 名前空間の
UCOMIConnectionPointContainer インターフェイスと
UCOMIConnectionPoint をインターフェイスを試してみてください。

編集 削除