Ruby Office Automation-无法让活动处理程序在Msword工作
-
01-10-2019 - |
题
Ruby版本1.9.19.1p430在W7上运行,使用Office 2010。
我正在尝试查看DocumentBeforeClose活动,但我什至无法接近它的工作!
我曾使用Excel进行了一些示例,其中处理了SheetSelectionChange。它没有任何问题。
使用相同的过程,我想处理上述单词事件。
我的代码在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的单词事件。
解决方案
我认为您应该在win32ole_event调用中使用Word对象而不是DOC对象,因为“ ApplicationEvents4”与Word.Application相关。
ev = WIN32OLE_EVENT.new(wd, 'ApplicationEvents4')
PS
不要忘记消息循环
loop do
WIN32OLE_EVENT.message_loop
end
不隶属于 StackOverflow