Rubino Office Automation - non può ottenere gestori di eventi al lavoro in MSWord
-
01-10-2019 - |
Domanda
Rubino versione 1.9.1p430 in esecuzione su W7 con Office 2010.
Sto cercando di catturare l'evento DocumentBeforeClose, ma non può nemmeno avvicinarsi a farlo funzionare!
ho seguito alcuni esempi che utilizzano Excel in cui viene gestita la SheetSelectionChange. Funziona senza problemi.
Con lo stesso processo, ho voluto gestire l'evento sopra Word.
Il mio codice non riesce la dichiarazione WIN32OLE_EVENT.new. Ecco quello che sto usando:
require 'win32ole'
wd = WIN32OLE.connect('Word.Application')
wd.visible = true
doc = wd.Documents.Add
ev = WIN32OLE_EVENT.new(doc, 'ApplicationEvents4')
L'errore che ottengo è:
ev = WIN32OLE_EVENT.new(doc, 'ApplicationEvents4')
RuntimeError: failed to query IConnectionPoint
HRESULT error code:0x80040200
Ho cercato ampiamente per il contenuto corretto per il nome del lavello nella dichiarazione WIN32OLD_EVENT
, ma questo è il migliore che ho venire con ed è ovviamente errato!
sarei molto grato se qualcuno mi può puntare nella giusta direzione. Sarei interessato a sapere se qualcuno è riuscito a gestire gli eventi con successo di parola da Ruby.
Soluzione
Penso che si dovrebbe usare oggetto di Word al posto di oggetto doc in WIN32OLE_EVENT chiamata, a causa della 'ApplicationEvents4' si riferisce a Word.Application.
ev = WIN32OLE_EVENT.new(wd, 'ApplicationEvents4')
PS
Non dimenticare ciclo di messaggi
loop do
WIN32OLE_EVENT.message_loop
end