2017-06-09 3 views
0

In Python 3.6 Ich verwende eine COM-Schnittstelle, um mit Excel und Word zu kommunizieren, in diesem Fall Word für automatisierte Berichterstattung, da die Datenverarbeitung in Python erfolgt.Python Mitglieder von COM ole Objekt

Ich weiß nicht, wie Python die Mitglieder eines solchen COM-Objekts ähnlich der Verwendung der dir()-Funktion erhalten kann. (Früher Matlab, würde ich die .get oder .invoke Methoden verwenden, um dieses zu erhalten) wäre

So ist der Code:

def wordOpen(wordfile): 
    pythoncom.CoInitializeEx(pythoncom.COINIT_APARTMENTTHREADED)  
    wApp = win32com.client.DispatchEx('Word.Application') 
    wDoc = wApp.Documents.Open(wordfile) 
    wApp.Visible = 1 
    wApp.Activate 
    wRange = wDoc.Content 
    return wApp, wDoc, wRange 

wApp, wDoc, wRange = wordOpen(wordfile) 

dir(wDoc) 

.. was mich nicht die Liste der Methoden und Eigenschaften des bereitstellt Word-Dokument-Objekt (ähnlich für wApp und wRange).

Ähnlich habe ich versucht inspect.getmembers(wDoc), aber dies bietet auch nicht die Liste der Methoden/Eigenschaften, die ich suche.

Für die gleiche Sache, wenn ich mit Excel kommuniziere, ging ich in den VBA-Editor und bekomme dort eine Liste, aber gibt es irgendeine Methode, dies von der IPython Konsole direkt zu tun?

Antwort

0

Habe etwas mehr gesucht und habe es selbst herausgefunden. Das obige Beispiel verwendet 'dynamisches Dispatching' und wir möchten stattdessen 'statisches Dispatching' verwenden. Das ändert den Code nicht, es beinhaltet nur eine einmalige Aktion.

Dynamisch ist eine schnell und schmutzig Methode, um diese Objekte zu erstellen, und dann weiß Python nichts über den Typ des Objekts. Statisch bedeutet, dass Sie makepy.py über die Befehlszeile ausführen müssen, um eine Typbibliothek (in diesem Fall für Word-Objekte) zu erstellen. Danach hat python alle Informationen über das Objekt bei jedem nächsten Start der COM Objekt.

Das Verfahren ist sehr einfach und vergleichbar mit der VBA-Aktion zum Hinzufügen von Referenzen zu Ihrem Projekt.