-
Andrew Pitonyak
BASIC-Makrosfür
OpenOffice und LibreOffice
Von den Grundlagen zu konkreten Praxisbeispielen
Ins Deutsche übertragen und bearbeitet
von Volker Lenhardt
Mit Beiträgen von Andreas Heier und Volker Lenhardt
Letzte Änderung
Dienstag, 20. Februar 2018
-
Die amerikanische Originalausgabe erscheint unter dem Titel
OpenOffice.org Macros Explained, 3. ed.
ODT-Version: http://www.pitonyak.org/OOME_3_0.odt
PDF-Version: http://www.pitonyak.org/OOME_3_0.pdf
Durchgesehene, korrigierte und ergänzte Ausgabe.Vormals
erschienen unter dem Titel „OpenOffice.org-Makros Erklärt“.Die
Nutzungsrechte an diesem Dokument liegen zum jetzigen Zeitpunkt
ausschließlich bei denAutoren und dem Übersetzer.Das Dokument kann
kostenfrei heruntergeladen werden:ODT-Version:
http://www.uni-due.de/~abi070/count.php?id=OOME_3_0_deutsch.odtPDF-Version:
http://www.uni-due.de/~abi070/count.php?id=OOME_3_0_deutsch.pdfDie
endgültige Entscheidung über die Nutzungsrechte wird zu einem
späteren Zeitpunkt ge-troffen.
http://www.pitonyak.org/OOME_3_0.pdfhttp://www.uni-due.de/~abi070/count.php?id=OOME_3_0_deutsch.pdfhttp://www.uni-due.de/~abi070/count.php?id=OOME_3_0_deutsch.odthttp://www.pitonyak.org/OOME_3_0.pdf
-
Anmerkung des ÜbersetzersFür die Übersetzung habe ich
OpenOffice.org, bzw. Apache OpenOffice (AOO 4.1.4) undLibreOffice
(LO 5.3.0.3) unter dem Linux-Betriebssystem openSUSE 11.3 – LEAP
42.2 (64Bit) und der Benutzeroberfläche KDE (zur Zeit 5.8.6)
verwendet.Ich habe die vom Autor unter Fedora (Gebietsschema en-US)
verwendeten Menübefehle undBildschirmfotos zum überwiegenden Teil
durch die von LO und AOO (de-DE) ersetzt.Ich habe in diesem Buch
alle Variablennamen in Makros im allgemeinen in ihrer
englischenOriginalform belassen und habe sie kommentiert, wenn
deren Bedeutung aus dem Zusammen-hang nicht direkt erschlossen
werden konnte. Wenn es mir aber notwendig schien, habe ich
sieübersetzt.Es gibt eine Reihe von Gründen, weshalb es sinnvoll
ist, auch im muttersprachlichen Umfeldfür Variablen englische
Bezeichner zu wählen: Verben ohne Flexionen, einsilbige Wörter,
har-monischer Einklang mit den englischsprachigen Anweisungen und
Objektmethoden und -ei-genschaften, sowie – last but not least –
internationale Hilfemöglichkeiten im Falle, dass manim Internet
nachfragen muss, weil etwas nicht so funktioniert, wie man geglaubt
hat.Hier und da können Zahlen mit Tausenderpunkt und Dezimalzahlen
für Verwirrung sorgen.Alle Zahlen in Basic-Anweisungen sind ohne
Tausendertrenner und mit einem Dezimalpunktzu schreiben. Die
Ausgabe mit Print oder MsgBox verwendet jedoch die lokalisierte
Form mitDezimalkomma. Im laufenden Text schreibe ich Zahlen auf
deutsche Weise mit Dezimalkom-ma und falls angebracht mit
Tausenderpunkt, beim Zitieren von Basic-Anweisungen jedochmit
Dezimalpunkt.Der Text ist in den Schriftarten Arial, Times New
Roman und Courier New formatiert, da ichdavon ausgehe, dass der
überwiegende Teil der Leser unter MS Windows arbeitet, wo
dieseSchriften Standard sind. Unter Linux (vielleicht auch Mac-OS,
ich kenne mich da nicht so aus)sind diese Schriften üblicherweise
nicht installiert. Daher habe ich sie nicht nur in die PDF-Da-tei
eingebettet, sondern auch in die ODT-Datei. Leider wird diese
Option nur von LO, nichtaber von AOO unterstützt. In AOO kann es
also sein, dass die konkret verwendete Ersatz-schriftart
abweichende Maße aufweist und dass daher abweichende Zeilen- und
Seitenumbrü-che resultieren. Als Linux-AOO-Nutzer sollten Sie also
die PDF-Datei als Grundlage für Quel-lenangaben für Zitate wählen
oder die oben genannten Schriften installieren.Beim Zitieren
sollten Sie immer auch das Datum der aktuellen Bearbeitung
angeben.Für Anregungen und Kritik bin ich immer dankbar. Meine
E-Mail-Adresse finden Sie auf mei-ner Homepage:
http://www.uni-due.de/~abi070/ooo.htmlVolker Lenhardt
http://www.uni-due.de/~abi070/ooo.html
-
Inhaltsverzeichnis1. Einführung und
Organisation..........................................................................................................13
1.1. In eigener
Sache.......................................................................................................................131.2.
Arbeitsumgebung und
Kommentare........................................................................................13
2. Die
Grundlagen...............................................................................................................................142.1.
Makrospeicherung...................................................................................................................14
2.1.1.
Bibliothekscontainer........................................................................................................142.1.2.
Bibliotheken.....................................................................................................................152.1.3.
Module und
Dialoge.........................................................................................................162.1.4.
Kernpunkte.......................................................................................................................16
2.2. Neue Module und Bibliotheken
anlegen.................................................................................162.3.
Makrosprache..........................................................................................................................182.4.
Ein Modul in einem Dokument
anlegen..................................................................................182.5.
Integrierte Entwicklungsumgebung (Integrated Debugging
Environment)............................202.6. Das Makro
eingeben................................................................................................................232.7.
Ein Makro
ausführen...............................................................................................................232.8.
Makrosicherheit.......................................................................................................................242.9.
Haltepunkte
einsetzen..............................................................................................................262.10.
Wie Bibliotheken gespeichert
werden...................................................................................272.11.
Wie Dokumente gespeichert
werden.....................................................................................282.12.
Fazit.......................................................................................................................................28
3.
Sprachstrukturen..............................................................................................................................293.1.
Kompatibilität mit Visual
Basic..............................................................................................303.2.
Kompilieroptionen und
-direktiven.........................................................................................313.3.
Variablen..................................................................................................................................31
3.3.1. Namen für Variablen, Routinen, Konstanten und
Sprungmarken...................................313.3.2. Variablen
deklarieren.......................................................................................................323.3.3.
Variablen einen Wert
zuweisen.......................................................................................343.3.4.
Boolesche Variablen sind entweder True oder
False.......................................................343.3.5.
Numerische
Variablen......................................................................................................35
Typ
Integer.............................................................................................................................36Typ
Long
Integer....................................................................................................................37Typ
Currency..........................................................................................................................37Typ
Single..............................................................................................................................38Typ
Double.............................................................................................................................38
3.3.6. String-Variablen enthalten
Text.......................................................................................383.3.7.
Date-Variablen.................................................................................................................393.3.8.
Eigene Datentypen
erzeugen............................................................................................403.3.9.
Variablen mit speziellen Typen
deklarieren....................................................................423.3.10.
Objekt-Variablen............................................................................................................423.3.11.
Variant-Variablen...........................................................................................................423.3.12.
Konstanten.....................................................................................................................43
3.4. Die Anweisung
With...............................................................................................................443.5.
Arrays......................................................................................................................................44
3.5.1. Die Dimensionen eines Arrays
ändern.............................................................................473.5.2.
Unerwartetes Verhalten von
Arrays.................................................................................49
3.6. Subroutinen und
Funktionen....................................................................................................513.6.1.
Argumente........................................................................................................................52
Übergabe als Referenz oder als
Wert.....................................................................................52Optionale
Argumente.............................................................................................................55Vorgegebene
Argumentwerte................................................................................................56
3.6.2. Rekursive
Routinen..........................................................................................................56
iii
-
3.7. Gültigkeitsbereich von Variablen, Subroutinen und
Funktionen............................................573.7.1.
Lokale Variablen, in einer Subroutine oder Funktion
deklariert.....................................573.7.2. In einem
Modul definierte
Variablen...............................................................................58
Global.....................................................................................................................................59Public......................................................................................................................................59Private
oder
Dim....................................................................................................................59
3.8.
Operatoren...............................................................................................................................603.8.1.
Mathematische und
String-Operatoren............................................................................61
Unäres Plus (+) und Minus
(-)................................................................................................62Potenzierung
(^).....................................................................................................................62Multiplikation
(*) und Division
(/).........................................................................................62Rest
nach Division
(Mod)......................................................................................................63Ganzzahlige
Division
(\)........................................................................................................63Addition
(+), Subtraktion (-) und String-Verkettung (& und
+)............................................65
3.8.2. Logische und bitweise
Operatoren...................................................................................65And.........................................................................................................................................67Or............................................................................................................................................68Xor..........................................................................................................................................68Eqv.........................................................................................................................................69Imp.........................................................................................................................................69Not..........................................................................................................................................70Shift-Operationen...................................................................................................................70
3.8.3.
Vergleichsoperatoren.......................................................................................................713.9.
Ablaufsteuerung.......................................................................................................................72
3.9.1. Definition eines Labels als
Sprungmarke........................................................................723.9.2.
GoSub, GoTo, On GoSub und
OnGoTo..........................................................................72
GoSub.....................................................................................................................................72GoTo.......................................................................................................................................73On
GoTo und On
GoSub........................................................................................................73
3.9.3. If Then
Else......................................................................................................................743.9.4.
IIf......................................................................................................................................753.9.5.
Choose..............................................................................................................................763.9.6.
Select
Case.......................................................................................................................77
Case-Ausdrücke.....................................................................................................................77Wenn
Case-Anweisungen so einfach sind, warum sind sie so oft
fehlerhaft?.......................78Wie man fehlerfreie
Case-Ausdrücke
schreibt.......................................................................79
3.9.7. While ...
Wend.................................................................................................................813.9.8.
Do ...
Loop.......................................................................................................................81
Aussteigen aus der
Do-Schleife.............................................................................................82Welche
Do-Loop-Form ist zu
wählen?..................................................................................82
3.9.9. For ...
Next.......................................................................................................................833.9.10.
Exit Sub und Exit
Function............................................................................................84
3.10. Fehlerbehandlung mit On
Error.............................................................................................853.10.1.
CVErr.............................................................................................................................863.10.2.
Fehler ignorieren mit On Error Resume
Next................................................................873.10.3.
Mit On Error GoTo 0 einen Error-Handler
ausschalten................................................873.10.4.
Fehlermeldungen
sichern...............................................................................................883.10.5.
Mit On Error GoTo Label einen eigenen Error-Handler
definieren..............................893.10.6. Error-Handler –
wozu?...................................................................................................91
3.11.
Fazit.......................................................................................................................................934.
Numerische
Routinen......................................................................................................................94
4.1. Trigonometrische
Funktionen..................................................................................................954.2.
Rundungsfehler und
Genauigkeit............................................................................................97
iv
-
4.3. Mathematische
Funktionen....................................................................................................1004.4.
Numerische
Konvertierungen................................................................................................1014.5.
Konvertierungen von Zahl zu
String.....................................................................................1074.6.
Einfache
Formatierung..........................................................................................................1074.7.
Zahlen auf anderer Basis, hexadezimal, oktal und
binär.......................................................1084.8.
Zufallszahlen..........................................................................................................................1114.9.
Fazit.......................................................................................................................................112
5.
Array-Routinen..............................................................................................................................1135.1.
Array() erstellt schnell ein eindimensionales Array mit
Daten.............................................1145.2. DimArray
erstellt leere mehrdimensionale
Arrays................................................................1165.3.
Änderung der
Array-Dimensionen........................................................................................1165.4.
Array zu String und wieder
zurück........................................................................................1185.5.
Funktionen für Informationen über
Arrays............................................................................1195.6.
Fazit.......................................................................................................................................122
6. Datums- und
Uhrzeit-Routinen.....................................................................................................1236.1.
Kompatibilitätsproblem.........................................................................................................1246.2.
Ermittlung des aktuellen Datums und der aktuellen
Uhrzeit.................................................1246.3.
Datumsangaben, Zahlen und
Strings.....................................................................................1246.4.
Lokal formatierte
Datumsangaben........................................................................................1266.5.
Datumsangaben nach ISO
8601.............................................................................................1276.6.
Probleme mit
Datumsangaben...............................................................................................1276.7.
Entnahme einzelner Komponenten eines
Datums.................................................................1316.8.
Datumsarithmetik..................................................................................................................1356.9.
Ein Datum aus Einzelkomponenten
zusammensetzen..........................................................1366.10.
Messung kurzer
Zeitverläufe...............................................................................................1376.11.
Wie schnell läuft dies ab? Ein Beispiel aus der realen
Welt!..............................................1386.12. Große
Zeitintervalle und spezielle
Datumsermittlungen.....................................................1416.13.
Fazit.....................................................................................................................................143
7.
String-Routinen.............................................................................................................................1447.1.
ASCII- und
Unicode-Werte...................................................................................................1467.2.
Standard-Stringfunktionen.....................................................................................................1497.3.
Strings und
Gebietsschema....................................................................................................1537.4.
Teilstrings..............................................................................................................................1537.5.
Ersetzen..................................................................................................................................1557.6.
Strings mit LSet und RSet
ausrichten....................................................................................1557.7.
Beliebige Formatierung mit
Format......................................................................................1577.8.
Konvertierung anderer Daten zu
Strings...............................................................................1617.9.
Weitergehende Methode zur
Textsuche................................................................................1627.10.
Fazit.....................................................................................................................................163
8.
Dateiroutinen.................................................................................................................................1648.1.
Der Dateipfad in
URL-Notation............................................................................................1658.2.
Funktionen zur Bearbeitung von
Verzeichnissen..................................................................1668.3.
Funktionen zur
Dateibearbeitung..........................................................................................1678.4.
Dateiattribute, Bitmasken und
Binärzahlen...........................................................................1718.5.
Auflistung eines
Verzeichnisinhalts......................................................................................1728.6.
Eine Datei
öffnen...................................................................................................................1738.7.
Informationen über geöffnete
Dateien...................................................................................1758.8.
Daten aus einer Datei lesen und in eine Datei
schreiben.......................................................1788.9.
Fazit.......................................................................................................................................185
9. Diverse weitere
Routinen..............................................................................................................1869.1.
Bildschirm und
Farbe............................................................................................................186
9.1.1. Bestimmung des
GUI-Typs...........................................................................................1869.1.2.
Ermittlung der Pixelgröße (in
Twips)............................................................................187
v
-
9.1.3. Der Gebrauch der
Farbfunktionen.................................................................................1889.2.
Makroausführung verzögern und
abbrechen.........................................................................1909.3.
Externe
Anwendungen...........................................................................................................190
9.3.1. Laufzeitbibliotheken (DLL = Dynamic Link
Libraries)................................................1919.3.2.
Befehle über die
Systemkommandozeile.......................................................................1929.3.3.
Dynamischer Datenaustausch
(DDE)............................................................................193
9.4. Benutzereingabe und
Bildschirmausgabe..............................................................................1949.4.1.
Einfache
Ausgabe..........................................................................................................1949.4.2.
Mehrzeilige
Ausgabe.....................................................................................................1969.4.3.
Eingabeaufforderung......................................................................................................198
9.5. Vermischte
Routinen.............................................................................................................1999.6.
Partition..................................................................................................................................2039.7.
Inspizierung und Erkennung von
Variablen..........................................................................2049.8.
Nicht zu empfehlende Routinen und andere
Kuriositäten.....................................................2099.9.
Routinen, die ich nicht
verstehe.............................................................................................2109.10.
Fazit.....................................................................................................................................211
10. Universal Network Objects
(UNO).............................................................................................21210.1.
Grundlegende
Typen...........................................................................................................213
10.1.1. Einfache
UNO-Datentypen..........................................................................................21310.1.2.
Konstanten...................................................................................................................21410.1.3.
Enumerationen.............................................................................................................21510.1.4.
Strukturen.....................................................................................................................215
10.2.
UNO-Interface.....................................................................................................................21710.3.
UNO-Service.......................................................................................................................21810.4.
Komplexere Strukturen (A.
Heier)......................................................................................224
10.4.1.
Pair...............................................................................................................................22410.4.2.
EnumerableMap...........................................................................................................22410.4.3.
PropertyBag.................................................................................................................228
10.5.
Kontext................................................................................................................................22910.6.
Inspizierung von Universal Network
Objects......................................................................23010.7.
Die Verwendung des
Typbeschreibungsmanagers..............................................................23510.8.
Typdefinition Object oder
Variant.......................................................................................23710.9.
Vergleich von
UNO-Variablen............................................................................................23810.10.
Eingebaute globale
UNO-Variablen..................................................................................23910.11.
Objekte und Eigenschaften
suchen....................................................................................24210.12.
UNO-Listeners und
Handlers............................................................................................244
10.12.1. Ihr erster
Listener.......................................................................................................24410.12.2.
Voraussetzungen für den Einsatz eines
Listeners......................................................24510.12.3.
Listener für
Auswahländerungen...............................................................................24710.12.4.
Handler für Tastatureingaben (V.
Lenhardt)..............................................................24810.12.5.
Listener für Dokumentereignisse (V.
Lenhardt)........................................................251
10.13. Erzeugung eines
UNO-Dialogs.........................................................................................25210.14.
Services für Dateien und
Verzeichnisse............................................................................256
10.14.1.
Pfadangaben...............................................................................................................25610.14.2.
Ersetzung von
Pfadvariablen.....................................................................................26010.14.3.
Der einfache Dateizugriff
SimpleFileAccess.............................................................26210.14.4.
Streams, Pipes und
Sockets........................................................................................263
Streams.................................................................................................................................263Pipes.....................................................................................................................................266Sockets
(A.
Heier)................................................................................................................267
10.15.
Fazit...................................................................................................................................27111.
Der
Dispatcher.............................................................................................................................272
11.1. Die
Umgebung.....................................................................................................................272
vi
-
11.1.1. Zwei unterschiedliche Methoden, OOo zu
steuern......................................................27211.1.2.
Dispatch-Befehle
suchen..............................................................................................274
Informationen über das WIKI
holen....................................................................................274Das
Interface
durchsuchen...................................................................................................274Den
Quellcode
lesen.............................................................................................................276
11.2. Ein Makro mit dem Dispatcher
schreiben...........................................................................27711.3.
Dispatch-Fehlfunktion – ein erweitertes
Zwischenspeicherbeispiel...................................27711.4.
Fazit.....................................................................................................................................278
12.
StarDesktop.................................................................................................................................27912.1.
Der Service
Frame...............................................................................................................279
12.1.1. Das Interface
XIndexAccess........................................................................................28012.1.2.
Frames mit den FrameSearchFlag-Konstanten
suchen................................................280
12.2. Das Interface
XEventBroadcaster........................................................................................28212.3.
Das Interface
XDesktop.......................................................................................................282
12.3.1. Schließen des Desktops und der enthaltenen
Komponenten.......................................28212.3.2.
Komponenten enumerieren mit
XEnumerationAccess................................................28312.3.3.
Die aktuelle
Komponente.............................................................................................28412.3.4.
Die aktuelle Komponente (noch
einmal).....................................................................28412.3.5.
Der aktuelle
Frame.......................................................................................................285
12.4. Ein Dokument
öffnen..........................................................................................................28612.4.1.
Benannte
Argumente....................................................................................................28912.4.2.
Eine Dokumentvorlage
öffnen.....................................................................................29112.4.3.
Makros beim Öffnen eines Dokuments
freigeben.......................................................29212.4.4.
Importieren und
exportieren.........................................................................................29312.4.5.
Namen der Import- und
Exportfiler.............................................................................29312.4.6.
Dokumente laden und
speichern..................................................................................30012.4.7.
Fehlerbehandlung während des Ladens eines
Dokuments..........................................301
12.5.
Fazit.....................................................................................................................................30113.
Allgemeine
Dokument-Methoden...............................................................................................303
13.1.
Service-Manager..................................................................................................................30313.2.
Services und
Interfaces........................................................................................................30413.3.
Eigenschaften setzen und
lesen...........................................................................................30513.4.
Dokumenteigenschaften......................................................................................................307
13.4.1. Dokumenteigenschaften eines nicht geöffneten
Dokuments.......................................30913.4.2.
Benutzerdefinierte
Eigenschaften................................................................................30913.4.3.
Das veraltete
Dokumentinfo-Objekt............................................................................310
13.5. Ereignisse
auflisten..............................................................................................................31013.5.1.
Einen eigenen Listener
anmelden................................................................................31213.5.2.
Dispatch-Befehle
abfangen..........................................................................................312
13.6.
Verknüpfungsziele...............................................................................................................31413.7.
Zugriff auf die Ansichtsdaten:
XViewDataSupplier...........................................................31613.8.
Ein Dokument schließen:
XCloseable.................................................................................31713.9.
Folien:
XDrawPagesSupplier..............................................................................................318
13.9.1. Draw und
Impress........................................................................................................31813.9.2.
Linien mit Pfeilen zeichnen in
Calc.............................................................................32013.9.3.
Writer...........................................................................................................................322
13.10. Das
Modell.........................................................................................................................32313.10.1.
Dokumentargumente..................................................................................................324
13.11. Ein Dokument
speichern....................................................................................................32613.12.
Bearbeitung von
Formatvorlagen......................................................................................328
13.12.1. Nützliche Helfer für
Formatvorlagen.........................................................................33413.13.
Der Umgang mit dem Gebietsschema
(Locale).................................................................33813.14.
Auflistung der
Drucker......................................................................................................345
vii
-
13.15. Dokumente
drucken...........................................................................................................34613.15.1.
Textdokumente
drucken.............................................................................................35013.15.2.
Tabellendokumente
drucken......................................................................................35113.15.3.
Beispiel für einen Druck-Listener in
Calc.................................................................35213.15.4.
Druckbeispiele von Vincent Van
Houtte...................................................................355
13.16. Services
erzeugen..............................................................................................................36313.17.
Dokumenteinstellungen.....................................................................................................36413.18.
Der coolste Trick, den ich
kenne.......................................................................................36613.19.
Einen URL in anderen Sprachen
konvertieren..................................................................36613.20.
Fazit...................................................................................................................................366
14.
Textdokumente............................................................................................................................36714.1.
Grundbausteine....................................................................................................................368
14.1.1. Der primäre Textinhalt: das Interface
XText...............................................................36814.1.2.
Textranges: das Interface
XTextRange........................................................................36914.1.3.
Einfachen Text
einfügen..............................................................................................37014.1.4.
Textinhalt, der kein String ist: der Service
TextContent.............................................371
14.2. Absätze
enumerieren...........................................................................................................37214.2.1.
Absatzeigenschaften.....................................................................................................373
Einen Seitenumbruch
einfügen............................................................................................377Die
Absatzvorlage
zuweisen................................................................................................377
14.2.2.
Zeicheneigenschaften...................................................................................................37814.2.3.
Absatzteile
enumerieren...............................................................................................382
14.3.
Bilder...................................................................................................................................38414.4.
HTML einfügen und verlinkte Grafiken
einbetten..............................................................38714.5.
Cursors.................................................................................................................................388
14.5.1.
Viewcursors.................................................................................................................38914.5.2.
Textcursors (im Gegensatz zu
Viewcursors)...............................................................39014.5.3.
Mit einem Cursor den Text
durchlaufen......................................................................391
Den Viewcursor mit dem Textcursor
synchronisieren.........................................................39314.5.4.
Mit Hilfe eines Cursors auf Inhalt
zugreifen...............................................................394
14.6.
Textauswahl.........................................................................................................................39614.6.1.
Ist Text
ausgewählt?.....................................................................................................39714.6.2.
Textauswahl: Welches Ende ist
wo?............................................................................39814.6.3.
Die
Textauswahl-Rahmenstruktur...............................................................................39914.6.4.
Leerzeichen und Leerzeilen entfernen: ein größeres
Beispiel.....................................401
Was sind weiße
Zeichen?.....................................................................................................401Rangfolge
der Zeichen für die
Löschentscheidung..............................................................402Wie
man die Standard-Rahmenstruktur
nutzt......................................................................403Das
Arbeitsmakro.................................................................................................................403
14.6.5. Textauswahl, abschließende
Gedanken.......................................................................40514.7.
Suchen und
ersetzen............................................................................................................405
14.7.1. Eine Textauswahl oder einen bestimmten Range
durchsuchen...................................406Suche nach allen
Treffern.........................................................................................................40714.7.2.
Suchen und
ersetzen.....................................................................................................40714.7.3.
Erweitertes Suchen und
Ersetzen.................................................................................408
14.8.
Textcontent..........................................................................................................................41014.9.
Texttabellen.........................................................................................................................411
14.9.1. Das richtige Textobjekt
nutzen....................................................................................41314.9.2.
Methoden und
Eigenschaften.......................................................................................41414.9.3.
Einfache und komplexe
Tabellen.................................................................................41614.9.4.
Tabellen enthalten
Zellen.............................................................................................41914.9.5.
Handhabung eines
Texttabellencursors.......................................................................42014.9.6.
Formatierung einer
Texttabelle....................................................................................423
viii
-
14.10.
Textfelder...........................................................................................................................42514.10.1.
Textmasterfelder........................................................................................................43214.10.2.
Textfelder erzeugen und
einfügen..............................................................................434
14.11. Textmarken
(Bookmarks)..................................................................................................43714.12.
Nummernkreise, Querverweise und
Formatierung............................................................438
14.12.1. Zahlen und Datumsangaben
formatieren...................................................................438Auflistung
der dem aktuellen Dokument bekannten
Formate.............................................439Ein
Zahlenformat suchen und
erstellen................................................................................439Standardformate...................................................................................................................440
14.12.2. Ein Masterfeld
erzeugen............................................................................................44114.12.3.
Ein Nummernkreisfeld
einfügen................................................................................44114.12.4.
Text durch ein Nummernkreisfeld
ersetzen...............................................................44214.12.5.
Einen Querverweis (GetReference-Feld)
erzeugen...................................................44314.12.6.
Text durch einen Querverweis
ersetzen.....................................................................44414.12.7.
Das Makro, das alles
zusammenfügt..........................................................................446
14.13.
Inhaltsverzeichnisse...........................................................................................................44714.14.
Fazit...................................................................................................................................452
15.
Tabellendokumente.....................................................................................................................45315.1.
Zugriff auf
Tabellenblätter..................................................................................................45415.2.
Tabellenzellen enthalten die
Daten......................................................................................456
15.2.1.
Zelladresse...................................................................................................................45715.2.2.
Zellinhalte....................................................................................................................45715.2.3.
Zelleigenschaften.........................................................................................................45915.2.4.
Zellkommentare...........................................................................................................468
15.3. Nicht übersetzte
XML-Attribute..........................................................................................46915.4.
Zellbereiche in einem
Tabellenblatt....................................................................................470
15.4.1. Eigenschaften von
Zellbereichen.................................................................................471Gültigkeitsregeln..................................................................................................................471Bedingte
Formatierung.........................................................................................................473
15.4.2. Services für
Zellbereiche.............................................................................................474Zugriff
auf Zellen und
Zellbereiche.....................................................................................474Zellabfrage...........................................................................................................................475Suche
nach nicht-leeren Zellen in einem
Bereich................................................................476Komplexe
Zellabfragen........................................................................................................477
Vorgänger und Nachfolger
suchen..................................................................................479Spaltenunterschiede
suchen.............................................................................................479
15.4.3. Suchen und
ersetzen.....................................................................................................48015.4.4.
Zellen
verbinden..........................................................................................................48015.4.5.
Spalten und Zeilen: Zugriff, Einfügen und
Löschen....................................................48115.4.6.
Daten als Array lesen und
schreiben............................................................................48215.4.7.
Funktionsberechnungen auf einen Zellbereich
anwenden...........................................48315.4.8.
Zellen und Zellbereiche
leeren.....................................................................................48415.4.9.
Zellen automatisch mit Daten
füllen............................................................................48415.4.10.
Matrixformeln............................................................................................................48615.4.11.
Mehrfachoperationen in einem
Zellbereich...............................................................48715.4.12.
Einheitlich formatierte
Zellen....................................................................................48915.4.13.
Sortieren.....................................................................................................................490
15.5.
Tabellenblätter.....................................................................................................................49415.5.1.
Verknüpfung mit einem externen
Tabellendokument.................................................49515.5.2.
Abhängigkeiten suchen mit
Detektiv-Funktionen.......................................................49615.5.3.
Gliederungen................................................................................................................49815.5.4.
Zellen kopieren, verschieben und
einfügen.................................................................49815.5.5.
Daten zwischen Dokumenten
kopieren........................................................................499
ix
-
Datenfunktionen...................................................................................................................499Zwischenablage....................................................................................................................500Übertragbarer
Inhalt.............................................................................................................500
15.5.6. Datenpilot und
Pivot-Tabellen.....................................................................................501Ein
Beispiel für den
Datenpiloten........................................................................................501
Der Aufbau der
Daten......................................................................................................502Erzeugung
der
Datenpilot-Tabelle...................................................................................503
Eingriff in die Kollektion der
Datenpilot-Tabellen..............................................................504Datenpilot-Felder.............................................................................................................505Datenpilot-Tabellen.........................................................................................................505Datenpilot-Felder
filtern..................................................................................................506
15.5.7.
Tabellenblattcursors.....................................................................................................50615.6.
Calc-Dokumente..................................................................................................................508
15.6.1.
Bereichsname...............................................................................................................50815.6.2.
Datenbankbereich.........................................................................................................51115.6.3.
Filter.............................................................................................................................51115.6.4.
Dokumente und Tabellenblätter
schützen....................................................................51615.6.5.
Steuerung der
Neuberechnung.....................................................................................51615.6.6.
Zielwertsuche...............................................................................................................516
15.7. Eigene Tabellenfunktionen
schreiben..................................................................................51715.8.
Der aktuelle
Controller........................................................................................................519
15.8.1. Ausgewählte
Zellen......................................................................................................519Enumeration
der ausgewählten
Zellen.................................................................................520Text
auswählen.....................................................................................................................521Die
aktive
Zelle....................................................................................................................521
15.8.2. Allgemeine
Funktionalität............................................................................................52315.9.
Calc aus Microsoft Office
steuern.......................................................................................52415.10.
Zugriff auf
Calc-Funktionen..............................................................................................52515.11.
URLs in
Calc-Zellen..........................................................................................................52515.12.
Import und Export von XML-Dateien in Calc (V.
Lenhardt)...........................................527
15.12.1. Import einer
XML-Datei............................................................................................52815.12.2.
Export einer
XML-Datei............................................................................................537
15.13.
Diagramme........................................................................................................................54815.14.
Fazit...................................................................................................................................554
16. Zeichnungs- und
Präsentationsdokumente..................................................................................55516.1.
Draw-Seiten.........................................................................................................................556
16.1.1. Die eigentliche
Folienseite...........................................................................................55816.1.2.
Auf Formen zugreifen (A.
Heier)................................................................................55916.1.3.
Formen
kombinieren....................................................................................................56116.1.4.
Z-Ordnung (V.
Lenhardt).............................................................................................563
16.2.
Formen.................................................................................................................................56416.2.1.
Gemeinsame
Attribute.................................................................................................567
Der Zeichnungsservice
Text.................................................................................................572Maßlinie...............................................................................................................................573Linieneigenschaften.............................................................................................................574Flächenfüllung
am Beispiel einer geschlossenen
Bézierform..............................................575Schatten
und
Rechteck.........................................................................................................578Rotation
und
Scherung.........................................................................................................579
16.2.2.
Formtypen....................................................................................................................580Einfache
Linien....................................................................................................................580Offenes
Polygon
(PolyLineShape).......................................................................................581Geschlossenes
Polygon
(PolyPolygonShape)......................................................................582Rechteck
und
Textrahmen....................................................................................................583
x
-
Ellipse...................................................................................................................................584Bézierkurven........................................................................................................................586Verbinder..............................................................................................................................588
Eigene Klebepunkte
erzeugen.........................................................................................591Pfeile
über Vorlagen
hinzufügen.....................................................................................592
Eine Tabelle
einfügen...........................................................................................................59316.3.
Formulare.............................................................................................................................59416.4.
Präsentationen......................................................................................................................596
16.4.1.
Präsentationsfolien.......................................................................................................59816.4.2.
Formen für
Präsentationen...........................................................................................600
16.5.
Fazit.....................................................................................................................................60317.
Verwaltung der
Bibliotheken......................................................................................................604
17.1. Zugriff auf Bibliotheken mit OOo
Basic.............................................................................60417.2.
Bibliotheken in einem
Dokument........................................................................................60817.3.
Eine
Installationsroutine......................................................................................................60817.4.
Fazit.....................................................................................................................................610
18. Dialoge und
Steuerelemente........................................................................................................61118.1.
Mein erster
Dialog...............................................................................................................611
18.1.1. Der
Eigenschaften-Dialog............................................................................................61418.1.2.
Aufruf eines Dialogs aus einem Makro
heraus............................................................61618.1.3.
Eine Ereignisprozedur
zuweisen..................................................................................617
18.2. Dialoge und
Steuerungsmuster............................................................................................61918.3.
Gemeinsamkeiten von Dialogen und
Steuerelementen.......................................................620
18.3.1.
Interfaces......................................................................................................................62018.3.2.
Modelle........................................................................................................................622
18.4.
Dialoge.................................................................................................................................62318.5.
Steuerelemente.....................................................................................................................625
18.5.1.
Schaltfläche..................................................................................................................62718.5.2.
Markierfeld...................................................................................................................63018.5.3.
Optionsfeld...................................................................................................................63118.5.4.
Gruppierungsrahmen....................................................................................................63318.5.5.
Horizontale oder vertikale
Linie..................................................................................63418.5.6.
Kombinationsfeld.........................................................................................................63418.5.7.
Texteingabefelder.........................................................................................................636
Währungsfeld.......................................................................................................................637Numerisches
Feld.................................................................................................................639Datumsfeld...........................................................................................................................639Uhrzeitfeld............................................................................................................................643Formatiertes
Feld..................................................................................................................644Maskiertes
Feld....................................................................................................................647Beschriftungsfeld.................................................................................................................649Dateiauswahl........................................................................................................................649
18.5.8. Grafisches
Kontrollfeld................................................................................................65118.5.9.
Fortschrittsbalken.........................................................................................................65118.5.10.
Listenfeld...................................................................................................................65218.5.11.
Horizontale und vertikale
Bildlaufleiste....................................................................653
18.6. Mehrseitige Dialoge (V.
Lenhardt)......................................................................................65518.6.1.
Steps.............................................................................................................................65518.6.2.
Tabs..............................................................................................................................657
18.7. Das Beispiel
Objektinspektor..............................................................................................66218.7.1.
Dienstfunktionen und
-Subroutinen.............................................................................663
Leerraum in einem String erkennen und
entfernen..............................................................663Einfache
Objekte in einen String
konvertieren....................................................................664
xi
-
Objektinspektion mit
Basic-Methoden.................................................................................667Sortierung
eines
Arrays........................................................................................................668
18.7.2. Einen Dialog zur Laufzeit
erzeugen.............................................................................66918.7.3.
Beobachter...................................................................................................................673
Optionsfelder........................................................................................................................673Inspektion
Auswahl..............................................................................................................674Inspektion
zurück.................................................................................................................675
18.7.4. Die Debug-Information
ermitteln................................................................................675Alternative
Version (V.
Lenhardt).......................................................................................679
18.7.5. Werte für Eigenschaften
ermitteln...............................................................................68218.8.
Fazit.....................................................................................................................................684
19.
Informationsquellen.....................................................................................................................68519.1.
Die in OpenOffice.org eingebauten
Hilfetexte....................................................................68519.2.
In OpenOffice.org mitgelieferte
Makros.............................................................................68519.3.
Websites...............................................................................................................................686
19.3.1.
Referenzmaterial..........................................................................................................68619.3.2.
Makrobeispiele.............................................................................................................68619.3.3.
Verschiedenes..............................................................................................................686
19.4. http://www.openoffice.org/api/ oder
http://api.libreoffice.org............................................68719.5.
Mailinglisten und
Foren.......................................................................................................68819.6.
Die Suche nach
Antworten..................................................................................................68919.7.
Fazit.....................................................................................................................................690
Anhang 1. Verzeichnis der
Abbildungen...........................................................................................691Anhang
2. Verzeichnis der
Tabellen..................................................................................................695Anhang
3. Verzeichnis der
Listings...................................................................................................702
xii
-
1. Einführung und Organisation 13
1. Einführung und OrganisationAm Anfang stand die erste Auflage
von OpenOffice.org Macros Explained (OOME). Ein paar Jahrespäter
stellte ich die zweite Auflage fertig, aktualisiert als Anpassung
an die OpenOffice.org (OOo)-Version 2.x. Diese zweite Auflage wurde
jedoch nie veröffentlicht. Nun denke ich, es wird Zeit fürdie
dritte Auflage.Der größte Teil des Inhalts der vorherigen Auflagen
ist erhalten geblieben. Die ersten Kapitel, die dieSprachsyntax
behandeln, sind im wesentlichen unverändert bis auf die neu
hinzugekommenenSprachelemente.Seit der letzten Veröffentlichung hat
sich die Anzahl der von OOo unterstützten Services mehr
alsverdoppelt, und die Funktionalität ist erheblich erweitert
worden. Leider ist der Leistungsumfanggrößer, als ich Zeit oder
Raum habe zu dokumentieren. So umfangreich dieses Buch auch ist, es
fehltleider noch viel. Sie sollten dieses Buch daher als
Nachschlagewerk mit einer Vielzahl an Beispielennutzen, aber immer
daran denken, dass OOo in einem kontinuierlichen Wandel steckt und
immerwieder neue Funktionalitäten unterstützt.Das Dokument enthält
Schaltflächen zum Starten der Makros, die im Text vorgestellt
werden. Das istzwar fantastisch, wenn man den Originalquelltext
liest, produziert aber beim Ausdrucken uner-wünschte Artefakte. Tut
mir Leid.
1.1. In eigener SacheIch bin der Hauptautor dieses Dokuments,
ich bestreite meinen Lebensunterhalt nicht mit der Arbeitmit OOo,
und nichts in diesem Buch hat mit meinem Hauptberuf zu tun. Mit
anderen Worten, ich bineinfach irgendein Mitglied der
OOo-Gemeinschaft, der dies hier weitgehend ohne Entlohnung tut.Ich
erhalte zahllose Bitten um Hilfe, weil ich in der OOo-Gemeinschaft
prominent bin. Unglückli-cherweise ist meine Zeit schon über Gebühr
beansprucht, und es ist schwierig, allen persönlich zuHilfe zu
kommen. Ich helfe gerne in meiner nicht vorhandenen Freizeit, aber
bitte, nutzen Sie nachMöglichkeit schon vorhandenes Material,
Mailinglisten und Foren. Gelegentlich biete ich Lösungenauf
Vergütungsbasis an, aber für größere Projekte fehlt mir einfach die
Zeit.Ich begrüße Kommentare und Bug-Reports. Wenn Sie glauben,
etwas Interessantes sollte mit aufge-nommen werden, lassen Sie es
mich wissen. Wenn Sie einen ganzen Abschnitt oder ein
Kapitelschreiben wollen, tun Sie es. Wahrscheinlich werde ich Ihr
Werk heftig bearbeiten. Ich bitte um IhrFeedback und
Anregungen.
1.2. Arbeitsumgebung und KommentareDie Hauptarbeit an diesem
Buch wurde mit der offiziellen 64-Bit-Linuxversion unter Fedora
Linuxgeleistet. Begonnen wurde das Werk mit OpenOffice.org (OOo),
das nun in den beiden LinienLibreOffice (LO) und Apache OpenOffice
(AOO) weitergeführt wird. Ich verwende in diesem Buchden
ursprünglichen Namen OpenOffice oder OOo als Oberbegriff für jedes
der drei Produkte.AOO und LO sind unabhängig voneinander in
ständigem Wandel, daher ähneln sich mit der Zeit dieAPIs,
Funktionalitäten und Benutzerschnittstellen immer weniger. Es kann
dazu führen, dass ein Ma-kro, das in LO funktioniert, in AOO
scheitert. Die Weiterentwicklung geht in so schnellem Tempovor
sich, dass meine begrenzte Zeit nicht ausreicht, mit der
Dokumentation Schritt zu halten. Ich er-halte keine Vergütung für
meine Arbeit an diesem Dokument.Am besten probieren Sie es aus, was
in Ihrer Arbeitsumgebung funktioniert. Inspizieren Sie auch
dieObjektinstanzen, um die von ihnen unterstützten Eigenschaften,
Methoden, Konstanten, Enumeratio-nen, Structs, Services und
Interfaces zu erfahren.
-
14 2. Die Grundlagen
2. Die GrundlagenIn OpenOffice.org (OOo) werden Makros und
Dialoge in Dokumenten und Bibliotheken gespeichert.Die integrierte
Entwicklungsumgebung (Integrated Development Environment, IDE)
dient zum Er-stellen und zum Debuggen von Makros und Dialogen.
Dieses Kapitel führt in die Grundkonzepte desStarts der IDE und der
Makroerstellung ein. Es zeigt schrittweise den Aufbau eines
einfachen Ma-kros, das den Text „Hallo Welt“ auf dem Bildschirm
anzeigt.Ein Makro ist eine für den späteren Gebrauch gespeicherte
Folge von Anweisungen oder Tastenkom-binationen. Ein Beispiel für
ein einfaches Makro wäre eines, das Ihre Adresse ausgibt. Makros
unter-stützen Anweisungen für eine Vielzahl weiterreichender
Funktionen: Entscheidungen zu treffen(wenn zum Beispiel die
Differenz kleiner ist als null, zeige sie in Rot, falls nicht,
zeige sie inSchwarz), Schleifen zu durchlaufen (solange die
Differenz größer ist als null, subtrahiere 10), undsogar mit einer
Person zu kommunizieren (den Nutzer zum Beispiel nach einer Zahl zu
fragen). Eini-ge dieser Anweisungen basieren auf der
Programmiersprache BASIC. (BASIC ist ein Akronym fürBeginner’s
All-purpose Symbolic Instruction Code.) Üblicherweise bindet man
ein Makro an eineTastenkombination oder ein Werkzeugleisten-Symbol,
um es schnell starten zu können.Ein Dialog – oder Dialogfenster –
ist ein Fenstertyp für den „Dialog“ mit einem Nutzer. Der Dialogmag
dem Nutzer Informationen bieten oder eine Eingabe vom Benutzer
erwarten. Sie können Ihre ei-genen Dialoge erschaffen und sie in
einem Modul mit Ihren Makros speichern.Die
OpenOffice.org-Makrosprache ist sehr flexibel. Sie erlaubt die
Automatisierung sowohl einfa-cher als auch komplexer Aufgaben.
Obwohl es viel Spaß machen kann, Makros zu schreiben und
dieinternen Abläufe von OpenOffice.org kennenzulernen, ist es nicht
immer der beste Ansatz. Makrossind vor allem nützlich, wenn
dieselbe Aufgabe immer wieder durchgeführt werden muss, oder
wennman einen einzigen Tastendruck wünscht für etwas, das
normalerweise mehrere Schritte benötigt.Hier und da wird man auch
ein Makro schreiben, um etwas zu tun, dass man ansonsten
inOpenOffice.org nicht tun kann, aber in einem solchen Fall sollte
man vorher gründlich recherchieren,um sich zu vergewissern, dass
OOo es auch wirklich nicht kann. Zum Beispiel findet man in
einigenOpenOffice.org-Mailinglisten regelmäßig die Bitte um ein
Makro zum Entfernen leerer Absätze.Diese Funktionalität steht über
die AutoKorrektur zur Verfügung (Extras >
AutoKorrektur-Optio-nen > Optionen: Leere Absätze entfernen).
Man kann auch reguläre Ausdrücke verwenden, umLeerzeichen zu suchen
und zu ersetzen. Es gibt eine Zeit und einen Anlass für Makros und
eine Zeitfür andere Lösungen. Dieses Kapitel wird Sie auf die
Zeiten vorbereiten, wenn ein Makro das Mittelder Wahl ist.
2.1. MakrospeicherungIn OpenOffice.org werden logisch
zusammengehörende Prozeduren in einem Modul gespeichert. EinModul
könnte zum Beispiel Prozeduren enthalten zum Auffinden typischer
Fehler, die weitere Bear-beitung erfordern. Logisch
zusammenhängende Module werden in einer Bibliothek gespeichert,
undBibliotheken wiederum werden in Bibliothekscontainern
gespeichert. Die OpenOffice.org-Anwen-dung kann, wie auch jedes
OOo-Dokument, als Bibliothekscontainer fungieren.
Zusammenfassendgesagt, die OpenOffice-Anwendung und jedes
OpenOffice-Dokument können Bibliotheken, Moduleund Makros
enthalten.Container Ein Bibliothekscontainer enthält keine, eine
oder mehrere Bibliotheken.Bibliothek Eine Bibliothek enthält keine,
eine oder mehrere Module und Dialoge.Modul Ein Modul enthält keine,
eine oder mehrere Subroutinen oder Funktionen.
2.1.1. BibliothekscontainerEin OOo-Dokument ist ein
Bibliothekscontainer, genauso wie die Anwendung als ganze. Wenn
einbestimmtes Dokument ein Makro benötigt, speichert man das Makro
praktischerweise in dem Doku-ment. Das hat den Vorteil, dass das
Makro beim Dokument bleibt. So kann man auch ganz einfachMakros
versenden.
-
2. Die Grundlagen 15
Wenn jedoch verschiedene Dokumente dasselbe Makro benötigen und
jedes Dokument eine Kopiedavon hätte und Sie dann Änderungen an dem
Makro vornehmen wollten, müssten Sie es in jedemDokument ändern,
das dieses Makro enthält. In einem Dokument gelagerte Makros sind
nur für die-ses Dokument sichtbar. Es ist daher nicht einfach, ein
Makro in einem Dokument von außerhalb desDokuments aufzurufen.
Tipp Speichern Sie keine Makros in einem Dokument, die von
außerhalb des Dokuments aufgerufen werden (von seltenen Ausnahmen
abgesehen), denn Makros in einem Dokument sind nur für
diesesDokument sichtbar.
Der Bibliothekscontainer der Anwendung besteht aus zwei
Hauptkomponenten: mit OOo installierteMakros und von Ihnen selbst
erstellte Makros. Der OOo-Makrodialog zeigt Ihre Makros in
einemContainer mit dem Namen „Meine Makros“ und die mitgelieferten
als „OpenOffice.org Makros“ (s.Bild 1). OpenOffice.org-Makros
werden in einem Verzeichnis der Anwendungsinstallation
gespei-chert, „Meine Makros“ hingegen in Ihrem
Nutzerverzeichnis.Über Extras > Makros > Makros verwalten
> OpenOffice.org Basic öffnen Sie den Dialog fürOOo-Basic-Makros
(s. Bild 1). Die Bibliothekscontainer sind die Objekte der obersten
Stufe im Be-reich „Makro aus“.
Bild 1. Im Ooo-Makro-Dialog legen Sie neue Makros an und
organisieren die Bibliotheken.
2.1.2. BibliothekenEin Bibliothekscontainer enthält eine oder
mehrere Bibliotheken, und eine Bibliothek enthält ein odermehrere
Module und Dialoge. Doppelklicken Sie auf einen
Bibliothekscontainer im Bild 1, um dieenthaltenen Bibliotheken zu
sehen. Doppelklicken Sie auf eine Bibliothek, um die Bibliothek zu
la-den und die enthaltenen Module und Dialoge zu sehen.Der
OOo-Makrodialog zeigt geladene Bibliotheken mit einem anderen
Symbol an. Im Bild 2 sindStandard, XMLProcs, XrayTool und Depot
geladen, die anderen Bibliotheken nicht.
Tipp Die Symbole und Farben auf Ihrem Rechner können sich von
denen der Bildschirmfotos unter-scheiden. Unterschiedliche
OOo-Versionen können unterschiedliche Symbole und Farben nutzen,
und es wird mehr als nur ein Symbol-Set unterstützt. Über Extras
> Optionen > OpenOffice.org > Ansicht können Sie Größe und
Stil der Symbole einstellen.
-
16 2. Die Grundlagen
Bild 2. Geladene Bibliotheken werden anders angezeigt.
2.1.3. Module und DialogeIn einem Modul werden typischerweise
ähnliche Funktionalitäten auf einer niedrigeren Stufe als ei-ner
Bibliothek gruppiert. Die Makros werden in den Modulen gespeichert.
Um ein neues Modul an-zulegen, markieren Sie eine Bibliothek und
klicken auf Neu.
2.1.4. KernpunkteZu beachten:
• Sie können Bibliotheken von einem Bibliothekscontainer in
einen anderen importieren.• Sie importieren ein Modul dadurch, dass
Sie die Bibliothek importieren, die das Modul ent-
hält. Es ist über das GUI nicht möglich, einfach ein einzelnes
Modul zu importieren.• Geben Sie den Bibliotheken, Modulen und
Makros anschauliche Namen. Anschauliche Na-
men reduzieren die Wahrscheinlichkeit von Namenskollisionen, die
den Bibliotheksimport be-hindern.
• Die Standardbibliothek spielt eine Sonderrolle: sie wird
automatisch geladen, so dass die ent-haltenen Makros immer
verfügbar sind.
• Die Standardbibliothek wird von OOo automatisch angelegt und
kann nicht importiert werden.• Makros in einer Bibliothek sind erst
verfügbar, nachdem die Bibliothek geladen ist.• Über den
Makro-Verwaltungsdialog kann man neue Module anlegen, aber keine
neuen Biblio-
theken.Diese Kernpunkte habe gewisse Konsequenzen. Zum Beispiel
speichere ich Makros selten in derStandardbibliothek, weil ich die
Bibliothek nicht woanders hin importieren kann. Ich verwende
dieStandardbibliothek normalerweise für Makros, die über
Schaltflächen in einem Dokument gestartetwerden. Die Makros in der
Standardbibliothek laden dann die eigentlichen Arbeitsmakros in
anderenBibliotheken und starten sie.
2.2. Neue Module und Bibliotheken anlegenIm Makrodialog erstellt
die Schaltfläche Neu das Gerüst einer neuen Subroutine in der
ausgewähltenBibliothek (s. Bild 1 und Bild 2). Wenn die Bibliothek
noch kein Modul enthält, wird nach einer Na-mensabfrage ein neues
angelegt.
-
2. Die Grundlagen 17
Über die Schaltfläche Verwalten öffnen Sie die
OOo-Makroverwaltung (s. Bild 3). Die Registerkar-ten Module und
Dialoge sind nahezu identisch. Verwenden Sie die Registerkarten
Module und Dia-loge, um Module oder Dialoge anzulegen, zu löschen
oder umzubenennen.
Bild 3. Die Registerkarte Module der
OOo-Makroverwaltung.Verwenden Sie die Registerkarte Bibliotheken
(s. Bild 4), um Bibliotheken anzulegen, zu löschen,umzubenennen, zu
importieren oder zu exportieren.
Bild 4. Die Registerkarte Bibliotheken der
OOo-Makroverwaltung.Aus der Ort-Aufklappliste wählen Sie den
gewünschten Bibliothekscontainer. Um eine Bibliothekumzubenennen,
doppelklicken Sie auf die Bibliothek und ändern den Namen
direkt.
Achtung Ich habe das Umbenennen von Modulen und Bibliotheken in
der Makroverwaltung immer als frustrierend erlebt. Um eine
Bibliothek umzubenennen, klicken Sie doppelt oder dreifach auf den
Namen und warten dann ein paar Sekunden. Versuchen Sie es wieder.
Und noch einmal. Wech-seln Sie die Bibliothek. Klicken Sie wieder
doppelt oder dreifach auf den Namen. Sie merken schon, worum es
geht.Den einfachsten Weg, einen Modulnamen zu ändern, finden Sie in
der IDE. Rechtsklicken Sie aufden Modulnamen am unteren Rand und
wählen Umbenennen.
-
18 2. Die Grundlagen
2.3. MakrospracheDie OpenOffice.org-Makrosprache basiert auf der
Programmiersprache BASIC. Die Standardmakro-sprache heißt offiziell
StarBasic, wird aber auch als OOo Basic oder nur Basic bezeichnet.
Viele an-dere Programmiersprachen können zur Automatisierung von
OOo genutzt werden. OOo bringt prak-tische Unterstützung für Makros
mit, die in Basic, JavaScript, Python und BeanShell
geschriebensind. In diesem Dokument liegt mein Hauptinteresse auf
Basic.
2.4. Ein Modul in einem Dokument anlegenJedes OOo-Dokument ist
ein Bibliothekscontainer, der Makros und Dialoge enthalten kann.
Wennein Dokument die Makros enthält, die es benutzt, bedeutet
folglich der Besitz des Dokuments auchden Besitz der Makros. Das
ist eine praktische Methode für die Weitergabe und Speicherung.
SendenSie das Dokument an jemand anderen oder an einen anderen
Speicherort, sind die Makros immernoch erreichbar und nutzbar.
1. Um einem OOo-Dokument ein Makro hinzuzufügen, müssen Sie das
Dokument zur Bearbei-tung öffnen. Öffnen Sie als erstes ein neues
Textdokument, das den Namen „Unbenannt 1“erhält – vorausgesetzt,
dass momentan kein anderes Dokument ohne Namen geöffnet ist.
2. Über Extras > Makros > Makros verwalten >
OpenOffice.org Basic öffnen Sie den Dialogfür OOo-Basic-Makros (s.
Bild 1).
3. Klicken Sie auf Verwalten, um die OOo-Makro-Verwaltung zu
öffnen, und klicken dann aufdie Registerkarte Bibliotheken (s. Bild
4).
4. Wählen Sie „Unbenannt 1“ aus der Ort-Aufklappliste.
Bild 5. Die Registerkarte Bibliotheken der
OOo-Makroverwaltung.5. Klicken Sie auf Neu, um den Dialog für eine
neue Bibliothek zu öffnen.
Bild 6. Der Dialog Neue Bibliothek.
-
2. Die Grundlagen 19
6. Der Standardname ist Library1, nicht gerade aussagekräftig.
Verwenden Sie einen aussage-kräftigen Namen und klicken Sie OK. Die
neue Bibliothek steht nun in der Liste. Für diesesBeispiel habe ich
die Bibliothek „HelloWorld“ genannt.
Bild 7. Die neue Bibliothek steht in der Liste.7. In der
Registerkarte Module wählen Sie die Bibliothek HelloWorld. OOo hat
das Modul na-
mens „Module1“ beim Anlegen der Bibliothek erstellt.
Tipp Obwohl Module1 gleichzeitig mit der Bibliothek erstellt
wird, kann ein Bug in OOo 3.2 verhin-dern, dass das Modul angezeigt
wird, bevor der Dialog geschlossen und neu geöffnet wird.
Bild 8. Die neue Bibliothek steht in der Liste.8. Mit einem
Klick auf Neu öffnen Sie den Dialog Neues Modul. Der Standardname
ist Modu-
le2, weil Module1 schon existiert.
-
20 2. Die Grundlagen
Bild 9. Der Dialog Neues Modul.9. Geben Sie einen
aussagekräftigen Namen ein klicken auf OK. Zusammen mit dem neu
er-
stellten Modul wird schließlich auch Module1 angezeigt (Bug in
3.2.0).
Bild 10. Das neue Modul steht in der Liste.10. Markieren Sie
HelloModule und klicken auf Bearbeiten.11. An diesem Punkt habe ich
das Dokument unter dem Namen „DelMeDoc“ gespeichert, weil
ich es löschen werde, wenn ich mit dem Beispiel fertig bin.
Nennen Sie es nach Ihren Wün-schen. Wenn Sie dann den Dialog im
Bild 10 neu öffnen, wird statt „Unbenannt 1“ der Doku-mentenname
angezeigt.
Jetzt wird die Integrierte Entwicklungsumgebung (Integrated
Debugging Environment, IDE) zumEditieren des Makros geöffnet.
2.5. Integrierte Entwicklungsumgebung (Integrated Debugging
Environment)
In der Integrierten Entwicklungsumgebung (IDE) für Basic
erstellen Sie Makros und führen sie aus(s. Bild 11). Die IDE bietet
wesentliche Funktionalitäten auf kleinem Raum. Die Symbole der
Werk-zeugleiste sind in der Tabelle 1 erläutert. Links über dem
Bearbeitungsfenster finden Sie eine Auf-klappliste mit der Anzeige
der aktuellen Bibliothek. Der Bibli-othekscontainer steht in
eckigen Klammern, gefolgt von der Bibliothek. So kann man schnell
eineBibliothek auswählen.
-
2. Die Grundlagen 21
Bild 11. Die Integrierte Entwicklungsumgebung für Basic.Lassen
Sie den Mauscursor ein paar Sekunden auf einem Symbol der
Werkzeugleiste ruhen, um denbeschreibenden Text zu lesen, der einen
Hinweis auf die dahinter liegende Funktion gibt.Tabelle 1. Symbole
der Werkzeugleiste in der Basic-IDE.
Symbol Taste BeschreibungCtrl+N Neues Ooo-Dokument anlegen.
Ctrl+O Vorhandenes OOo Dokument öffnen.
Ctrl+S Aktuelle Bibliothek speichern. Wenn die Bibliothek zu
einem Dokument gehört, dann wirddas ganze Dokument gespeichert.
Ctrl+P Makro zum Drucker senden.
Ctrl+V Zwischenablage einfügen.
Ctrl+Z Letzte Aktivität rückgängig machen.
Ctrl+V Letzte rückgängig gemachte Aktivität
wiederherstellen.
Objektkatalog öffnen (s. Bild 12). Doppelklicken Sie auf das
ausgewählte Makro.
OOo-Makrodialog öffnen (s. Bild 2). Wählen Sie ein Makro aus und
klicken Sie auf Bear-beiten oder Ausführen.Shortcut für Extras >
Makros > Makros verwalten > OpenOffice.org Basic.Modul
auswählen. Öffnet die OOo-Makroverwaltung und zeigt die
Registerkarte Module an (s. Bild 3). Wählen Sie ein Modul und
klicken auf Bearbeiten.
OOo-Hilfe öffnen. Sie enthält eine Vielzahl nützlicher Beispiele
für Basic.
Kompilierungssymbol zum Prüfen von Syntaxfehlern. Eine Meldung
erscheint nur, wenn ein Fehler gefunden wurde. Das
Kompilierungssymbol kompiliert nur das aktuelle Modul.
-
22 2. Die Grundlagen
Symbol Taste BeschreibungF5 Ausführen des ersten Makros im
aktuellen Modul. Ist es angehalten (von einem Haltepunkt
oder bei Einzelschritten), wird es fortgesetzt. Um ein anderes
Makro auszuführen, nutzen
Sie . Damit öffnen Sie den OOo-Makrodialog. Wählen Sie das
gewünschte Makro undklicken auf Ausführen.
Shift+F5 Stoppen Sie das gerade laufende Makro.
Shift+F8 Prozedurschritt zur nächsten Anweisung. Wenn ein Makro
an einem Haltepunkt steht, wirddie aktuelle Anweisung ausgeführt.
Dient auch zum Start eines Makros im Einzelschritt-modus.
F8 Einzelschritt. Wie Prozedurschritt, außer dass der Schritt,
wenn die aktuelle Anweisung einanderes