Ruby Office Automation - ne peut pas obtenir des gestionnaires d'événements au travail dans MSWord
-
01-10-2019 - |
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.
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