1

Office2010を搭載したW7で実行されているRubyバージョン1.9.1p430。

DocumentBeforeCloseイベントをキャッチしようとしていますが、それを機能させるために近づくことさえできません。

SheetSelectionChangeが処理されるExcelを使用したいくつかの例に従いました。問題なく動作します。

同じプロセスを使用して、上記のWordイベントを処理したいと思いました。

私のコードは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イベントをうまく処理できたかどうか聞いてみたいと思います。

4

1 に答える 1

1

'ApplicationEvents4'はWord.Applicationに関連しているため、WIN32OLE_EVENT呼び出しではdocオブジェクトの代わりにWordオブジェクトを使用する必要があると思います。

ev = WIN32OLE_EVENT.new(wd, 'ApplicationEvents4')

PS
メッセージループを忘れないでください

loop do
    WIN32OLE_EVENT.message_loop
end
于 2010-09-07T09:11:13.570 に答える