Home » Tutorials » Third-Party-Komponenten » OLE-Automation von MS Office

OLE-Automation von MS Office

Installation

Seit Delphi 5 können Delphi-Entwickler sehr einfach MS Office fernsteuern, d.h. mit Delphi kann Word aufgerufen werden, Dokumente geöffnet und gedruckt werden usw.
Bei Delphi 5 (ohne ServicePack1) war noch eine manuelle Installation der Komponenten notwendig. In den neueren Delphi-Setups bekommt man die Möglichkeit die Version der zu installierenden Bibliotheken auszuwählen, also ob man die Komponenten für Office 2000, Office XP oder 2003 nutzen will.
Allerdings braucht man keine Angst vor einem Versionskonflikt zu haben – die Komponenten sind weitgehend kompatibel. Selbstverständlich kann man aber bei Word 2000 nicht die Funktionen von Word 2007 nutzen….
Ich möchte hier die Möglichkeit vorstellen, wie man sich die Komponenten (bzw. die Bibliothekten) selbst erstellen kann, das ist z.B. für die Turbo-Edition Benutzer sinnvoll, da diese keine Komponenten nachinstallieren können.
Verschiedene Softwarehersteller bieten über die COM-Schnittstelle (weitere Infos z.B. hier [1]) die Möglichkeit an, Funktionen ihrer Software zu nutzen. Dafür stellen Sie für die Software so genannte Type-Libraries zur Verfügung. Leider haben die wenigsten Typelibraries auch eine vernünftige Endung: Bei MS Word ist es die Datei “MSWord.OLB” und bei Excel direkt die Excel.exe. Wer im Menü von Delphi die Funktion “Komponente installieren” freigeschaltet hat, kann unter “Typbibliothek installieren” nachschauen, in welcher Datei die entsprechenden Klassen stehen – und auch welche Klassen der COM-Server zur Verfügung stellt.
Über das Programm typlibimp.exe von CodeGear kann man aus den Typelibraries Delphi-Wrapper-Units erstellen, die dann in Delphi eingebunden werden können. Seit dem Delphi 2006 kann Typlibimp neben den Delphi-Dateien auch C++-Dateien erstellen. Folgende Anweisung erstellt den Unit-Wrapper für Word:
tlibimp -p+ -R+ -O+ -Cw+ -Hr+ -Hs+ MSWord.OLB
Nach dem Ausführen der Anweisung erscheinen 6 weitere Dateien: eine WORD_tlb, eine Office_TLB und eine VBIDE_Tlb.pas und je eine *_tlb.dcr. Mit diesen Dateien lässt sich WORD fernsteuern.
Wenn Ihr unterschiedliche Office-Versionen unterstützen wollt, dann erstellt euch eben für jede dieser Versionen die entsprechende Unit und benennt sie dann um.