Reise ins Openoffice-UNOVersum

Kontextabhängige Dienste

Im Gegensatz dazu lassen sich kontextabhängige Dienste nur in Verbindung mit anderen Objekten - Dokumenten zumeist - verwenden. Der Dienst Text etwa öffnet den Zugang zu sämtlichen Inhalten eines Dokuments. Um ihn zu nutzen, benötigt man zunächst aber einen Verweis auf das Dokument selbst. Den erhält man am einfachsten für das aktuelle Dokument, und zwar mit Hilfe des Schlüsselworts ThisComponent:

Das Objekt objDokument stellt nun den kontextabhängigen Dienst Text bereit. Um ihn nutzen zu können, ist eine weitere Zuweisung an eine entsprechende Objektvariable erforderlich:

Dim objText As ObjectobjText = objDokument.Text

Egal, ob kontextabhängig oder -unabhängig: Ist ein UNO-Objekt einmal erstellt, lassen sich seine Eigenschaften und Methoden unmittelbar nutzen. Die getString- Methode von objText beispielsweise liefert den gesamten Dokumenttext als Zeichenkette, die ein Makro per MsgBox-Anweisung sichtbar macht:

MsgBox objText.getString

Wer die Eigenschaften und Methoden eines Objekts sinnvoll nutzen will, muss aber erst einmal wissen, welche es gibt. Dazu muss man sich die notwendigen Infos anderweitig beschaffen - beispielsweise von den Objekten selbst. Die verfügen durchweg über die Methoden DBG_properties und DBG_medethods, die jeweils eine Zeichenkette mit den Namen aller verfügbaren Objekteigenschaften respektive - methoden bereitstellen:

MsgBox objText.DBG_propertiesMsgBox objText.DBG_methods

Sternenhimmel

Grundlagen der Makroentwicklung in Openoffice

© Archiv

Wenn OpenOffice 3.1 unter Windows Vista läuft, muss die Verwendung eigener Dialoge eingeschaltet sein, damit FilePicker überhaupt einen Dateidialog anzeigt.

Für Dokumente ist der kontextunabhängige Dienst Desktop, der im UNO-Modul frame residiert, sicherlich der wichtigste. Weil Stars auch im UNOversum bevorzugt werden, kann man sich das Anlegen eines eigenen Objekts per createUnoService- Funktion sparen und die Eigenschaften und Methoden direkt über das Schlüsselwort StarDesktop abrufen.

Die Methode loadComponentFromURL etwa ermöglicht das Öffnen eines vorhandenen Dokuments, dessen Speicherort in einer plattformunabhängigen URL-Notation wie file:///home/ralf/Artikel.odt anzugeben ist.

Weil das für Windows-Anwender ziemlich gewöhnungsbedürftig ist, dürfen diese auf die Dienste der Basic-Funktion convertToURL zurückgreifen, die einen Windows-üblichen Pfadnamen in das URL-Format übersetzt. Die übrigen Argumente der loadComponentFromURL-Methode - der Text _blank, eine Null sowie ein leeres Variant-Array - spielen hier keine Rolle.

Im Erfolgsfall liefert die Methode einen Verweis auf das geöffnete Dokument zurück, den man für die spätere Weiterverwendung in einer Objektvariablen speichern sollte. Das Beispiel öffnet das Calc-Dokument D:\Tabelle.ods:

Dim strURL As StringDim objDokument As ObjectDim vntParms() As VariantstrURL = convertToUrl _("D:\Tabelle.ods")objDokument = StarDesktop _.loadComponentFromURL _(strURL, "_blank", 0, vntParms())

Mit der loadComponentFromURL-Methode lassen sich auch neue Dokumente anlegen. Dazu muss man ihr eine besondere URL übergeben, die sich aus dem Präfix private:factory/ und einem der folgenden Bezeichner, der die Dokumentart angibt, zusammensetzt:

swriter Textdokumentscalc Tabellendokumentsimpress Präsentationsdraw Zeichnungsmath Formel

Das folgende Beispiel legt ein neues Writer-Dokument an, das sich anschließend über die Variable objDokument ansprechen lässt :

strURL = "private:factory/swriter"objDokument = _StarDesktop _.loadComponentFromURL(strURL, _"_blank", 0, vntParms())
Grundlagen der Makroentwicklung in Openoffice

© Archiv

Über welche Eigenschaften und Methoden ein UNO-Objekt verfügt, verraten dessen Methoden DBG_properties und DBG_methods.

Neue Text-, Tabellen oder Zeichnungsdokumente werden stets auf der Grundlage der jeweiligen Standarddokumentvorlage angelegt. Sollen die Gestaltungsvorgaben einer anderen Dokumentvorlage gelten, übergibt man loadComponentFromURL anstelle der private:factory-URL einfach den Pfadnamen der zutreffenden *.ott-(Writer), *.ots-(Calc) oder *.otg-Datei (Draw).

Das Speichern eines neuen Dokuments erledigt dessen storeAsURL-Methode, wenn man ihr den gewünschten Speicherort plus Dateinamen im URL-Format sowie ein leeres Variant-Array als Argumente übergibt. Das Beispiel

strURL = ConvertToUrl _("D:\Briefe\Anfrage.odt")objDokument.storeAsURL(strURL, _vntParms())

speichert das Writer-Dokument unter dem Dateinamen Anfrage.odt im Ordner D:\Briefe. Wurde ein OpenOffice-Dokument bereits gespeichert, lassen sich alle Änderungen daran ganz einfach und ohne Angabe von Argumenten mit der store- Methode konservieren:

objDokument.store

Mehr zum Thema

Word - Text um Bild
Office-Tipp

In Word 2010 und 2013 gibt es Bilderrahmen mit einer pfiffigen Funktion für das Freistellen von Bildinhalten. Wir zeigen, wie es geht.
Wir zeigen den normgerechten Aufbau bei Briefen mit Microsoft Word.
Anleitung

Ein DIN-gerechter Aufbau erleichtert dem Lesenden die Übersicht. Word bietet dafür mit seinen Vorlagen und Funktionen alle Voraussetzungen.
Excel - Nettoarbeitstage
Office-Tipp

Wir erklären, wie Sie in Excel etwa für eine Arbeits- oder Urlaubsplanung die Wochenenden herausrechnen und die Nettoarbeitstage berechnen.
Kalender synchronisiert auf iPad
Zeit-Management

Kalender auf dem Smartphone, PC und im Web synchronisieren - mit unseren 9 Tipps schaffen Sie genau das. Verpassen Sie keinen Termin mehr!
Outlook - Logo
Office-Tipp

Wir zeigen, wie Sie in Outlook die Kalenderwoche anzeigen lassen können. Unser Office-Tipps sorgt für Durchblick bei der Terminplanung.