Reise ins Openoffice-UNOVersum

Alles gesammelt

Alles gesammelt

UNO fasst gleichartige Objekte zu Collections zusammen, die den Auflistungen in Microsoft Office entsprechen. So bilden die Tabellen (Sheets) eines Tabellendokuments genauso eine Collection wie die Absätze eines Textdokuments. Je nach Typ der Collection gibt es verschiedene Möglichkeiten, auf ihre einzelnen Elemente zuzugreifen.

Bei benannten Collections wie Sheets besitzt jedes Element einen individuellen Namen, über den man es mit Hilfe der getByName-Methode ansprechen kann. Das folgende Beispiel speichert einen Verweis auf die Tabelle Tabelle1 in der Objektvariablen objTabelle und weist deren Eigenschaft isVisible anschließend den Wert False zu, um die Tabelle unsichtbar zu machen (was sich durch eine Zuweisung von True ganz leicht wieder rückgängig machen lässt):

Die Methode getElementNames, über die jede benannte Collection verfügt, liefert die Namen aller Elemente als Array zurück. Das macht es einfach, eine Collection per Schleife zu durchlaufen. Das nächste Beispiel arbeitet sich per For-Next-Schleife durch das Variant-Array vntNamen(). Es enthält die Namen aller Tabellen, die der MsgBox-Befehl verkündet:

Dim vntNamen() As VariantDim intI As IntegervntNamen() = objTabellen _.getElementNamesFor intI = LBound(vntNamen) To _UBound(vntNamen)MsgBox vntNamen(intI)Next

Um feststellen zu können, ob ein bestimmtes Element in einer benannten Collection enthalten ist, benötigt man keine Schleife, da man sich die gewünschte Info ganz einfach per hasByName-Methode beschaffen kann. Das folgende Beispiel prüft das Vorhandensein der Tabelle Tabelle1 und zeigt das Ergebnis (True oder False) an:

MsgBox objTabellen.hasByName("Tabelle1")

Die Elemente der meisten Collections verfügen nicht nur über einen eindeutigen Namen, sondern auch über eine ebensolche Indexzahl, die die Position des Elements innerhalb der Collection angibt. Im Gegensatz zu VBA-Auflistungen beginnt die Collection-interne Zählung aber immer bei Null. Den Zugriff auf ein bestimmtes Element gewährt die getByIndex-Methode, der man die Indexzahl des gewünschten Elements übergeben muss.

objTabelle = objTabellen.getByIndex(1)

liefert einen Verweis auf die zweite (!) Tabelle des aktuellen Calc-Dokuments und speichert ihn in objTabelle. Alternativ ermöglicht OpenOffice einen verkürzten Zugriff auf ein indiziertes Element, der ohne die getByIndex-Methode auskommt:

objTabelle = objTabellen(1)

Wer die Indexzahlen zum Durchlaufen einer Collection verwendet, kann auf die Dienste der getElementNames-Methode verzichten. Das zeigt das folgende Beispiel, das ein weiteres Mal die Namen aller Tabellen anzeigt. Dazu arbeitet sich eine For-Next-Schleife durch sämtliche Elemente, deren Anzahl in der getCount- Eigenschaft der Collection abrufbar ist:

For intI = 0 To objTabellen _.getCount - 1MsgBox objTabellen(intI).NameNext

Weiterführende Literatur

[1] Thomas Krumbein, Makros Makros in OpenOffice.org 3 von Thomas Krumbein, ISBN 3-8362-1438-5, 44,90 Euro, Galileo Press 2007[2] API-Referenz online: http://api.openoffice.org/docs/common/ref/com/sun/star/module-ix.html[3] Developer's Guide online: http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/OpenOffice.org_Developers_Guide[4] Download des Developer's Guide als PDF-Datei: http://api.openoffice.org/docs/DevelopersGuide/DevelopersGuide.pdf

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.