Umsteigen auf OpenOffice: Von VBA zu OpenOffice-Basic

Die API

Bis hierher dürfte für den versierten VBA-Programmierer die etwas andere Entwicklungsumgebung noch keine Schwierigkeit darstellen. Problematischer wird es jedoch, wenn es darum geht, Daten in ein Tabellenblatt einzutragen oder auszulesen, neue Tabellenblätter zu erstellen, zu formatieren und so weiter – kurzum das, was in MS Office durch das Objektmodell einer jeden Applikation beschrieben wird.

Das Komponentenmodell von OOo heißt „API“ (Application Programming Interface). Mit ihrer Hilfe wird OOo automatisiert. Die API stellt eine Definition aller Objekte und Interfaces zur Verfügung, die angesteuert werden können. Sie lässt sich aber auch von außen automatisieren, das heißt von VS.NET, Java oder C++. Dies wiederum wird durch die Technologie mit dem Namen UNO (Universal Network Objects) ermöglicht (vergleichbar mit COM).

Services

Einer der zentralen Unterschiede zwischen VBA und OOo-Basic ist, dass OOo kein geschlossenes Objektmodell zur Verfügung stellt, sondern Services, die hinzugeladen werden können und müssen.

Ein Service ist – anders als ein Objekt – nicht direkt aufrufbar. Man muss eine Variable vom Typ Object deklarieren, um UNO in StarOffice zu verwenden. Durch die Initialisierung erhält sie den Verweis auf den gewünschten Service.

Dim Obj As Object
Obj = createUnoService("com.sun.star.frame.Desktop")

Über diesen Aufruf wird beispielsweise ein Verweis auf die StarOffice-Applikation hergestellt. Einige Services stehen nur in einer gewissen Umgebung (Dokument, Arbeitsblatt, …) zur Verfügung, andere Services hängen nicht von einer entsprechenden Umgebung ab. Sie werden mit der Methode createUnoService() erstellt.