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.

È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top