OLE-Automation von MS Office
Fernsteuerung mit Excel
Als zweite Applikation stelle ich noch kurz Excel vor. Excel besitzt im Office-Packet eine Sonderstellung. Da es schon immer eigene Wege gegangen ist (die Makrosprache ist zum Beispiel nicht mit Word kompatibel), gibt es auch bei der Automation große Unterschiede zu Word. Bei der ersten Anwendung soll zunächst nur Excel geöffnet werden. Füge eine TExcelApplication und 2 TButton Komponenten in das Formular ein. In das OnClick Ereignis des „Starten” Buttons kommt:
procedure TForm1.Button1Click(Sender: TObject); begin flcid:=GetUserDefaultLCID; ExcelApplication.Connect; ExcelApplication.Visible[flcid]:=true; ExcelApplication.UserControl:=true; end;
und in den „Beenden” Button:
procedure TForm1.Button2Click(Sender: TObject); begin ExcelApplication.Quit; ExcelApplication.Disconnect; end;
Bitte beachten: Die Variable flcid muss vom Typ DWord bzw. LongWord sein (Danke für den Hinweis von Herrn Köberl).
Du siehst, die Startprozedur von Excel unterscheidet sich schon sehr von Word. Als erstes benötigt man einen locale-identifier, eine Sammlung von sprachspezifischen Daten, die Windows über die API-Funktion GetUserDefaultLCID zur Verfügung stellt (flcid ist vom Typ Integer). Zusätzlich sollte immer neben der Eigenschaft visible auch die Eigenschaft UserControl gesetzt werden.
Hinweis: Auch hier gilt: wenn ihr keine Komponenten habt, dann einfach die entsprechende Variablen deklarieren und erzeugen (wie im Word-Beispiel).