Ruby Office Automation - ne peut pas obtenir des gestionnaires d'événements au travail dans MSWord

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

Question

La version Ruby 1.9.1p430 fonctionne sur W7 avec Office 2010.

Je suis en train de rattraper l'événement DocumentBeforeClose mais je ne peux même se rapprocher de l'obtenir au travail!

J'ai suivi quelques exemples en utilisant Excel où le SheetSelectionChange est manipulé. Il fonctionne sans aucun problème.

En utilisant le même processus, je voulais gérer ce qui précède l'événement Word.

Mon code échoue à la déclaration WIN32OLE_EVENT.new. Voici ce que j'utilise:

require 'win32ole'

wd = WIN32OLE.connect('Word.Application')
wd.visible = true
doc = wd.Documents.Add

ev = WIN32OLE_EVENT.new(doc, 'ApplicationEvents4')

L'erreur que je reçois est:

ev = WIN32OLE_EVENT.new(doc, 'ApplicationEvents4')
RuntimeError: failed to query IConnectionPoint
    HRESULT error code:0x80040200

J'ai regardé longuement le contenu correct pour le nom de l'évier dans l'instruction WIN32OLD_EVENT mais c'est le meilleur que je suis venu avec et il est évidemment! Incorrect

Je serais très reconnaissant si quelqu'un peut me diriger dans la bonne direction. Je serais intéressé d'entendre si quelqu'un a réussi à gérer avec succès les événements Word à partir Ruby.

Était-ce utile?

La solution

Je pense que vous devriez utiliser l'objet Word au lieu de l'objet doc dans l'appel WIN32OLE_EVENT, à cause de « ApplicationEvents4 » se rapporte à Word.Application.

ev = WIN32OLE_EVENT.new(wd, 'ApplicationEvents4')

PS
Ne pas oublier la boucle de message

loop do
    WIN32OLE_EVENT.message_loop
end
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top