Frage

Ruby Version 1.9.1P430 auf W7 mit Office 2010.

Ich versuche, das Dokumentbeforeclose -Event zu fangen, aber ich kann es nicht einmal annähern, es zum Laufen zu bringen!

Ich habe einige Beispiele mit Excel verfolgt, bei denen der SheetSelectionChange behandelt wird. Es funktioniert ohne Probleme.

Mit dem gleichen Prozess wollte ich das obige Word -Ereignis verarbeiten.

Mein Code schlägt bei der Anweisung win32ole_event.new fehl. Hier ist was ich benutze:

require 'win32ole'

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

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

Der Fehler, den ich bekomme, ist:

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

Ich habe ausführlich nach dem richtigen Inhalt für den Namen der Spüle in der gesucht WIN32OLD_EVENT Aussage, aber das ist das Beste, was ich mir ausgedacht habe und es ist offensichtlich falsch!

Ich wäre sehr dankbar, wenn mich jemand in die richtige Richtung verweisen kann. Ich wäre interessiert zu hören, ob es jemand geschafft hat, erfolgreich mit Wortveranstaltungen von Ruby umzugehen.

War es hilfreich?

Lösung

Ich denke, Sie sollten Word -Objekt anstelle von DOC -Objekt in Win32OLE_Event -Anruf verwenden, da sich 'ApplicationEvent4' auf word.application beziehen.

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

Ps
Vergessen Sie nicht die Nachrichtenschleife

loop do
    WIN32OLE_EVENT.message_loop
end
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top