Ruby Office Automation - не может получить обработчики событий для работы в Msword

StackOverflow https://stackoverflow.com/questions/3657070

Вопрос

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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top