OLE-Automation von MS Office
Word – Die erste Anwendung
Grundsätzliches: Wer die Office-Server-Komponenten installiert hat, kann diese selbstverständlich direkt benutzen, d.h. dort wo ich beschreibe wie man ein Objekt einer Klasse einem Form hinzufügt, einfach die entsprechende Komponente auf das Form ziehen.
Öffnen wir erst mal eine neue Anwendung. Setzt auf das Formular zwei Buttons (der erste bekommt die Caption “Starten” der andere “Beenden”. Die Eigenschaft FormStyle des Formulars wird auf „fsStayOnTop”. In die Ereignisroutine OnClick der Buttons kommt folgender Code:
Button Starten:
procedure TForm1.Button1Click(Sender: TObject); begin if assigned(WordApplication) then begin WordApplication.Connect; WordApplication.Visible:=true; end; end;
Button Beenden:
procedure TForm1.Button2Click(Sender: TObject); begin if assigned(WordApplication) then begin WordApplication.Quit; WordApplication.Disconnect; end; end;
Wie gesagt: Wenn Du die Komponenten hast, dann setze noch eine Komponeten TWordApplication auf das Formular. Alle andere fügen die WORD_tlb in die USES des Formulars auf und erstellen im “public” Bereich von TForm1 ein entsprechendes Objekt:
public WordApplication : TWordApplication;
Jetzt müssen wir noch im OnCreate-Ereignis das Objekt erzeugen:
procedure TForm1.FormCreate(Sender: TObject); begin WordApplication:=TWordApplication.create; end;
Und selbstverständlich im OnDestroy-Ereignis das Objekt wieder freigeben:
procedure TForm1.FormDestroy(Sender: TObject); begin FreeAndNil(WordApplication); end;
Anschließen kannst Du die Mini-Applikation gleich ausprobieren. Nach einem Klick auf den Button „Starten” wird Word gestartet und wartet auf weitere Aktionen. Nach einem Klick auf „Beenden” wird Word wieder geschlossen. Ist Word schon offen wird keine neue Instanz geöffnet. Wurde eine Instanz manuell (über das Startmenü) geöffnet, wird diese beim Klick auf „Beenden” auch geschlossen.
Leider funktioniert dieses Spiel mit dem Wechseln der Steuerung zwischen Automation und manueller Steuerung nicht bei allen Word-Versionen. Word 97 und Word 2003 haben damit ein Problem, Word 2000 funktioniert dagegen einwandfrei.