Ruby Office Automation - 无法使事件处理程序在MSWord中工作

时间:2010-09-07 08:38:26

标签: ruby win32ole office-automation

使用Office 2010在W7上运行Ruby版本1.9.1p430。

我正在尝试捕获DocumentBeforeClose事件,但我甚至无法接近它以使其工作!

我已经使用了Excel处理SheetSelectionChange的一些示例。它没有任何问题。

使用相同的过程,我想处理上面的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事件。

1 个答案:

答案 0 :(得分:1)

我认为你应该在WIN32OLE_EVENT调用中使用Word对象而不是doc对象,因为'ApplicationEvents4'与Word.Application有关。

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

PS
不要忘记消息循环

loop do
    WIN32OLE_EVENT.message_loop
end