Ruby Office Automation-イベントハンドラーをMSWORDで動作させることはできません
-
01-10-2019 - |
質問
Rubyバージョン1.9.1p430 Office 2010でW7で実行されています。
私はDocumentBeForeCloseイベントをキャッチしようとしていますが、それを機能させることさえできません!
SheetSelectionChangeが処理されるExcelを使用して、いくつかの例に従いました。問題なく動作します。
同じプロセスを使用して、上記のワードイベントを処理したかったのです。
私のコードは、win32ole_event.newステートメントで失敗します。これが私が使用しているものです:
require 'win32ole'
wd = WIN32OLE.connect('Word.Application')
wd.visible = true
doc = wd.Documents.Add
ev = WIN32OLE_EVENT.new(doc, 'ApplicationEvents4')
私が得るエラーは次のとおりです。
ev = WIN32OLE_EVENT.new(doc, 'ApplicationEvents4')
RuntimeError: failed to query IConnectionPoint
HRESULT error code:0x80040200
私は、シンクの名前の正しいコンテンツを広範囲に見てきました WIN32OLD_EVENT
声明ですが、これは私が思いついた最高のものであり、明らかに間違っています!
誰かが私を正しい方向に向けることができれば、私は最も感謝しています。誰かがRubyの単語イベントを成功して処理したかどうかを聞いてみたいと思います。
解決
word.applicationに関連する「applicationevents4」のため、win32ole_eventコールでdocオブジェクトの代わりに単語オブジェクトを使用する必要があると思います。
ev = WIN32OLE_EVENT.new(wd, 'ApplicationEvents4')
詩
メッセージループを忘れないでください
loop do
WIN32OLE_EVENT.message_loop
end
所属していません StackOverflow