2010-09-07 11 views
1

la version Ruby 1.9.1p430 en cours d'exécution sur W7 avec Office 2010.Ruby Office Automation - ne peut pas obtenir des gestionnaires d'événements pour travailler dans MSWord

Je suis en train d'attraper l'événement DocumentBeforeClose mais je ne peux même se rapprocher de l'obtenir pour travailler !

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

En utilisant le même processus, je voulais gérer l'événement Word ci-dessus.

Mon code échoue à l'instruction 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 la déclaration WIN32OLD_EVENT mais c'est le meilleur Je suis venu avec et c'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 les événements Word de Ruby.

+0

@grimbo: Il devrait y avoir une tique sur le côté gauche de cette question. Vous pouvez cliquer sur la coche si le bug est mis en sac. - Andrew Grimm –

Répondre

1

Je pense que vous devriez utiliser l'objet Word au lieu de l'objet doc dans l'appel WIN32OLE_EVENT, car '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 
+0

@grimbo: Il devrait y avoir une coche sur le côté gauche de cette question. Vous pouvez cliquer sur la coche si le bug est mis en sac. –

Questions connexes