Ruby Office Automation - не может получить обработчики событий для работы в Msword
-
01-10-2019 - |
Вопрос
Ruby версия 1.9.1P430 работает на W7 с Office 2010.
Я пытаюсь поймать событие DocumentBeforeClose, но я даже не могу приблизиться к работе!
Я следовал некоторым примерам, используя 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 вместо объекта DOC в вызове Win32Ole_Event, из-за «applicationEvents4» относится к Word.Application.
ev = WIN32OLE_EVENT.new(wd, 'ApplicationEvents4')
PS.
Не забывайте о цикле сообщений
loop do
WIN32OLE_EVENT.message_loop
end