1

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

我正在尝试捕捉 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 事件。

4

1 回答 1

1

我认为您应该在 WIN32OLE_EVENT 调用中使用 Word 对象而不是 doc 对象,因为“ApplicationEvents4”与 Word.Application 相关。

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

PS
不要忘记消息循环

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