イベントインターフェースを取得する
このようなイベントの インタフェース名を調べるには一種のノウハウが必要です。
イベントのインタフェース名を調べる方法について ruby-list:39137 で、arton さんが書かれた方法が非常に参考になります。簡単な方法は助田さんが作成された Simple OLE Browser や Python Object Browser を用いることでしょう。
MSDNを調べろって言われても慣れてないとなかなか正解にたどり着かないのがMSDN。オンラインだとストレスがたまりやすくてあきらめることが多いのよね。ということで、作ってみた。
require 'win32ole' tl = 'Microsoft Excel 9.0 Object Library' ole_classes = WIN32OLE_TYPE.ole_classes(tl) ole_classes.each do |c| begin methods = WIN32OLE_TYPE.new(tl, c.to_s).ole_methods methods.each do |m| p [c, m.event_interface, m] if m.event? end rescue end end
tlのところは各自環境に合わせて適当に。
追記:http://msdn.microsoft.com/library/en-us/dno2kta/html/offaut.asp
以下、実行結果
[QueryTable, "_QueryTable", QueryInterface] [QueryTable, "_QueryTable", AddRef] [QueryTable, "_QueryTable", Release] [QueryTable, "_QueryTable", GetTypeInfoCount] [QueryTable, "_QueryTable", GetTypeInfo] [QueryTable, "_QueryTable", GetIDsOfNames] [QueryTable, "_QueryTable", Invoke] [QueryTable, "RefreshEvents", QueryInterface] [QueryTable, "RefreshEvents", AddRef] [QueryTable, "RefreshEvents", Release] [QueryTable, "RefreshEvents", GetTypeInfoCount] [QueryTable, "RefreshEvents", GetTypeInfo] [QueryTable, "RefreshEvents", GetIDsOfNames] [QueryTable, "RefreshEvents", Invoke] [QueryTable, "RefreshEvents", BeforeRefresh] [QueryTable, "RefreshEvents", AfterRefresh] [Application, "_Application", QueryInterface] [Application, "_Application", AddRef] [Application, "_Application", Release] [Application, "_Application", GetTypeInfoCount] [Application, "_Application", GetTypeInfo] [Application, "_Application", GetIDsOfNames] [Application, "_Application", Invoke] [Application, "AppEvents", QueryInterface] [Application, "AppEvents", AddRef] [Application, "AppEvents", Release] [Application, "AppEvents", GetTypeInfoCount] [Application, "AppEvents", GetTypeInfo] [Application, "AppEvents", GetIDsOfNames] [Application, "AppEvents", Invoke] [Application, "AppEvents", NewWorkbook] [Application, "AppEvents", SheetSelectionChange] [Application, "AppEvents", SheetBeforeDoubleClick] [Application, "AppEvents", SheetBeforeRightClick] [Application, "AppEvents", SheetActivate] [Application, "AppEvents", SheetDeactivate] [Application, "AppEvents", SheetCalculate] [Application, "AppEvents", SheetChange] [Application, "AppEvents", WorkbookOpen] [Application, "AppEvents", WorkbookActivate] [Application, "AppEvents", WorkbookDeactivate] [Application, "AppEvents", WorkbookBeforeClose] [Application, "AppEvents", WorkbookBeforeSave] [Application, "AppEvents", WorkbookBeforePrint] [Application, "AppEvents", WorkbookNewSheet] [Application, "AppEvents", WorkbookAddinInstall] [Application, "AppEvents", WorkbookAddinUninstall] [Application, "AppEvents", WindowResize] [Application, "AppEvents", WindowActivate] [Application, "AppEvents", WindowDeactivate] [Application, "AppEvents", SheetFollowHyperlink] [Chart, "_Chart", QueryInterface] [Chart, "_Chart", AddRef] [Chart, "_Chart", Release] [Chart, "_Chart", GetTypeInfoCount] [Chart, "_Chart", GetTypeInfo] [Chart, "_Chart", GetIDsOfNames] [Chart, "_Chart", Invoke] [Chart, "ChartEvents", QueryInterface] [Chart, "ChartEvents", AddRef] [Chart, "ChartEvents", Release] [Chart, "ChartEvents", GetTypeInfoCount] [Chart, "ChartEvents", GetTypeInfo] [Chart, "ChartEvents", GetIDsOfNames] [Chart, "ChartEvents", Invoke] [Chart, "ChartEvents", Activate] [Chart, "ChartEvents", Deactivate] [Chart, "ChartEvents", Resize] [Chart, "ChartEvents", MouseDown] [Chart, "ChartEvents", MouseUp] [Chart, "ChartEvents", MouseMove] [Chart, "ChartEvents", BeforeRightClick] [Chart, "ChartEvents", DragPlot] [Chart, "ChartEvents", DragOver] [Chart, "ChartEvents", BeforeDoubleClick] [Chart, "ChartEvents", Select] [Chart, "ChartEvents", SeriesChange] [Chart, "ChartEvents", Calculate] [Worksheet, "_Worksheet", QueryInterface] [Worksheet, "_Worksheet", AddRef] [Worksheet, "_Worksheet", Release] [Worksheet, "_Worksheet", GetTypeInfoCount] [Worksheet, "_Worksheet", GetTypeInfo] [Worksheet, "_Worksheet", GetIDsOfNames] [Worksheet, "_Worksheet", Invoke] [Worksheet, "_Worksheet", Activate] [Worksheet, "DocEvents", QueryInterface] [Worksheet, "DocEvents", AddRef] [Worksheet, "DocEvents", Release] [Worksheet, "DocEvents", GetTypeInfoCount] [Worksheet, "DocEvents", GetTypeInfo] [Worksheet, "DocEvents", GetIDsOfNames] [Worksheet, "DocEvents", Invoke] [Worksheet, "DocEvents", SelectionChange] [Worksheet, "DocEvents", BeforeDoubleClick] [Worksheet, "DocEvents", BeforeRightClick] [Worksheet, "DocEvents", Activate] [Worksheet, "DocEvents", Deactivate] [Worksheet, "DocEvents", Calculate] [Worksheet, "DocEvents", Change] [Worksheet, "DocEvents", FollowHyperlink] [Workbook, "_Workbook", QueryInterface] [Workbook, "_Workbook", AddRef] [Workbook, "_Workbook", Release] [Workbook, "_Workbook", GetTypeInfoCount] [Workbook, "_Workbook", GetTypeInfo] [Workbook, "_Workbook", GetIDsOfNames] [Workbook, "_Workbook", Invoke] [Workbook, "WorkbookEvents", QueryInterface] [Workbook, "WorkbookEvents", AddRef] [Workbook, "WorkbookEvents", Release] [Workbook, "WorkbookEvents", GetTypeInfoCount] [Workbook, "WorkbookEvents", GetTypeInfo] [Workbook, "WorkbookEvents", GetIDsOfNames] [Workbook, "WorkbookEvents", Invoke] [Workbook, "WorkbookEvents", Open] [Workbook, "WorkbookEvents", Activate] [Workbook, "WorkbookEvents", Deactivate] [Workbook, "WorkbookEvents", BeforeClose] [Workbook, "WorkbookEvents", BeforeSave] [Workbook, "WorkbookEvents", BeforePrint] [Workbook, "WorkbookEvents", NewSheet] [Workbook, "WorkbookEvents", AddinInstall] [Workbook, "WorkbookEvents", AddinUninstall] [Workbook, "WorkbookEvents", WindowResize] [Workbook, "WorkbookEvents", WindowActivate] [Workbook, "WorkbookEvents", WindowDeactivate] [Workbook, "WorkbookEvents", SheetSelectionChange] [Workbook, "WorkbookEvents", SheetBeforeDoubleClick] [Workbook, "WorkbookEvents", SheetBeforeRightClick] [Workbook, "WorkbookEvents", SheetActivate] [Workbook, "WorkbookEvents", SheetDeactivate] [Workbook, "WorkbookEvents", SheetCalculate] [Workbook, "WorkbookEvents", SheetChange] [Workbook, "WorkbookEvents", SheetFollowHyperlink] [OLEObject, "_OLEObject", QueryInterface] [OLEObject, "_OLEObject", AddRef] [OLEObject, "_OLEObject", Release] [OLEObject, "_OLEObject", GetTypeInfoCount] [OLEObject, "_OLEObject", GetTypeInfo] [OLEObject, "_OLEObject", GetIDsOfNames] [OLEObject, "_OLEObject", Invoke] [OLEObject, "OLEObjectEvents", QueryInterface] [OLEObject, "OLEObjectEvents", AddRef] [OLEObject, "OLEObjectEvents", Release] [OLEObject, "OLEObjectEvents", GetTypeInfoCount] [OLEObject, "OLEObjectEvents", GetTypeInfo] [OLEObject, "OLEObjectEvents", GetIDsOfNames] [OLEObject, "OLEObjectEvents", Invoke] [OLEObject, "OLEObjectEvents", GotFocus] [OLEObject, "OLEObjectEvents", LostFocus]