win32com: early binding funktioniert nicht

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
pudeldestodes
User
Beiträge: 65
Registriert: Samstag 9. Juni 2007, 23:45

Freitag 10. April 2009, 02:13

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.
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Freitag 10. April 2009, 15:54

Gibt es evtl. mehrere unterschiedliche Grapher-Versionen bei Dir? Bei mir tauchen zumindest in der Liste von makepy mehrere Excel-Versionen auf.
MfG
HWK
pudeldestodes
User
Beiträge: 65
Registriert: Samstag 9. Juni 2007, 23:45

Freitag 10. April 2009, 17:01

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.
Antworten