Seite 1 von 1

win32com: early binding funktioniert nicht

Verfasst: Freitag 10. April 2009, 02:13
von pudeldestodes
Auch auf die Gefahr hin, dass ich zu später Stunde einfach auf dem Schlauch stehe:

Ich habe eine Anwendung (Grapher), die ich gerne mit Python und DOM nutzen möchte. Dabei würde ich gerne mit pywin32 das early binding nutzen, nur leider funktioniert es schlicht nicht:
python makepy.py -i (unter win32com/client/)und Auswahl der entsprechenden Bibliothek ergibt

Code: Alles auswählen

Grapher 7.0 Type Library
 {C3079254-4AD5-4D81-9A6C-DD3C051EB0C7}, lcid=0, major=1, minor=0
 >>> # Use these commands in Python code to auto generate .py support
 >>> from win32com.client import gencache
 >>> gencache.EnsureModule('{C3079254-4AD5-4D81-9A6C-DD3C051EB0C7}', 0, 1, 0)
Gut, damit dann alos:

Code: Alles auswählen

import win32com.client as win
win.gencache.EnsureModule('{C3079254-4AD5-4D81-9A6C-DD3C051EB0C7}', 0, 1, 0)
grapher = win.Dispatch("Grapher.Application")

print repr(grapher)
Ausgabe:
<COMObject Grapher.Application>
Wie hier unter "Late-Bound Automation" ausgeführt, wird also Late-Binding genutzt. (Mit Excel im Übrigen genau das selbe). Die entsprechende Datei liegt aber in win32com/client/gen_py und wird, wenn man sie löscht, bei Skriptaufruf auch neu generiert. Da es keinerlei Fehlermeldung gibt und er einfach automatisch das Late-Binding nutzt, habe ich momentan überhaupt keinen Ansatzpunkt.

Verfasst: Freitag 10. April 2009, 15:54
von HWK
Gibt es evtl. mehrere unterschiedliche Grapher-Versionen bei Dir? Bei mir tauchen zumindest in der Liste von makepy mehrere Excel-Versionen auf.
MfG
HWK

Verfasst: Freitag 10. April 2009, 17:01
von pudeldestodes
Nein, ich habe nur eine Grapherversion installiert und dementsprechend auch nur eine Auswahlmöglichkeit.

Aber wo du die verschiedenen Excel-Versionen erwähnst, habe ich nun makepy.py für alle vorhandenen Versionen ausgeführt und mit Excel funktioniert es jetzt. Dann werde ich mal noch ein wenig googlen; eventuell funktioniert dann das Early Binding schlicht nicht für jede Bibliothek. Das wäre allerdings ärgerlich, denn dann muss ich doch weiter mit dem Basic-Verschnitt arbeiten.

Nachtrag: dieser Mailwechsel sieht nach einem ähnlichen Problem aus. Aber da fehlt mir jetzt die Zeit um durchzusteigen. Das ist mir momentan zu hoch.