715
Andrew Pitonyak BASIC-Makros fü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

BASIC-Makros für OpenOffice und LibreOfficeabi070/files/OOo/OOME/OOME_3_0_deutsch.pdf · Andrew Pitonyak BASIC-Makros für OpenOffice und LibreOffice Von den Grundlagen zu konkreten

Embed Size (px)

Citation preview

Andrew Pitonyak

BASIC-Makrosfr

OpenOffice und LibreOffice

Von den Grundlagen zu konkreten Praxisbeispielen

Ins Deutsche bertragen und bearbeitet

von Volker Lenhardt

Mit Beitrgen 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 ergnzte Ausgabe.Vormals erschienen unter dem Titel OpenOffice.org-Makros Erklrt.Die Nutzungsrechte an diesem Dokument liegen zum jetzigen Zeitpunkt ausschlielich 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 endgltige Entscheidung ber die Nutzungsrechte wird zu einem spteren 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 bersetzersFr 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 Benutzeroberflche KDE (zur Zeit 5.8.6) verwendet.Ich habe die vom Autor unter Fedora (Gebietsschema en-US) verwendeten Menbefehle 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 siebersetzt.Es gibt eine Reihe von Grnden, weshalb es sinnvoll ist, auch im muttersprachlichen Umfeldfr Variablen englische Bezeichner zu whlen: Verben ohne Flexionen, einsilbige Wrter, har-monischer Einklang mit den englischsprachigen Anweisungen und Objektmethoden und -ei-genschaften, sowie last but not least internationale Hilfemglichkeiten im Falle, dass manim Internet nachfragen muss, weil etwas nicht so funktioniert, wie man geglaubt hat.Hier und da knnen Zahlen mit Tausenderpunkt und Dezimalzahlen fr 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 untersttzt. In AOO kann es also sein, dass die konkret verwendete Ersatz-schriftart abweichende Mae aufweist und dass daher abweichende Zeilen- und Seitenumbr-che resultieren. Als Linux-AOO-Nutzer sollten Sie also die PDF-Datei als Grundlage fr Quel-lenangaben fr Zitate whlen oder die oben genannten Schriften installieren.Beim Zitieren sollten Sie immer auch das Datum der aktuellen Bearbeitung angeben.Fr 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. Einfhrung 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 ausfhren...............................................................................................................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. Kompatibilitt mit Visual Basic..............................................................................................303.2. Kompilieroptionen und -direktiven.........................................................................................313.3. Variablen..................................................................................................................................31

3.3.1. Namen fr 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. Gltigkeitsbereich 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

Unres 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-Ausdrcke.....................................................................................................................77Wenn Case-Anweisungen so einfach sind, warum sind sie so oft fehlerhaft?.......................78Wie man fehlerfreie Case-Ausdrcke schreibt.......................................................................79

3.9.7. While ... Wend.................................................................................................................813.9.8. Do ... Loop.......................................................................................................................81

Aussteigen aus der Do-Schleife.............................................................................................82Welche Do-Loop-Form ist zu whlen?..................................................................................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 binr.......................................................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 zurck........................................................................................1185.5. Funktionen fr Informationen ber Arrays............................................................................1195.6. Fazit.......................................................................................................................................122

6. Datums- und Uhrzeit-Routinen.....................................................................................................1236.1. Kompatibilittsproblem.........................................................................................................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 Zeitverlufe...............................................................................................1376.11. Wie schnell luft dies ab? Ein Beispiel aus der realen Welt!..............................................1386.12. Groe 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 Binrzahlen...........................................................................1718.5. Auflistung eines Verzeichnisinhalts......................................................................................1728.6. Eine Datei ffnen...................................................................................................................1738.7. Informationen ber geffnete 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 Pixelgre (in Twips)............................................................................187

v

9.1.3. Der Gebrauch der Farbfunktionen.................................................................................1889.2. Makroausfhrung verzgern 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 Kuriositten.....................................................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 fr den Einsatz eines Listeners......................................................24510.12.3. Listener fr Auswahlnderungen...............................................................................24710.12.4. Handler fr Tastatureingaben (V. Lenhardt)..............................................................24810.12.5. Listener fr Dokumentereignisse (V. Lenhardt)........................................................251

10.13. Erzeugung eines UNO-Dialogs.........................................................................................25210.14. Services fr 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. Schlieen 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 whrend 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 geffneten 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. Verknpfungsziele...............................................................................................................31413.7. Zugriff auf die Ansichtsdaten: XViewDataSupplier...........................................................31613.8. Ein Dokument schlieen: 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. Ntzliche Helfer fr 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 fr 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 primre Textinhalt: das Interface XText...............................................................36814.1.2. Textranges: das Interface XTextRange........................................................................36914.1.3. Einfachen Text einfgen..............................................................................................37014.1.4. Textinhalt, der kein String ist: der Service TextContent.............................................371

14.2. Abstze enumerieren...........................................................................................................37214.2.1. Absatzeigenschaften.....................................................................................................373

Einen Seitenumbruch einfgen............................................................................................377Die Absatzvorlage zuweisen................................................................................................377

14.2.2. Zeicheneigenschaften...................................................................................................37814.2.3. Absatzteile enumerieren...............................................................................................382

14.3. Bilder...................................................................................................................................38414.4. HTML einfgen 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 ausgewhlt?.....................................................................................................39714.6.2. Textauswahl: Welches Ende ist wo?............................................................................39814.6.3. Die Textauswahl-Rahmenstruktur...............................................................................39914.6.4. Leerzeichen und Leerzeilen entfernen: ein greres Beispiel.....................................401

Was sind weie Zeichen?.....................................................................................................401Rangfolge der Zeichen fr die Lschentscheidung..............................................................402Wie man die Standard-Rahmenstruktur nutzt......................................................................403Das Arbeitsmakro.................................................................................................................403

14.6.5. Textauswahl, abschlieende 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 einfgen..............................................................................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 einfgen................................................................................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 zusammenfgt..........................................................................446

14.13. Inhaltsverzeichnisse...........................................................................................................44714.14. Fazit...................................................................................................................................452

15. Tabellendokumente.....................................................................................................................45315.1. Zugriff auf Tabellenbltter..................................................................................................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.................................................................................471Gltigkeitsregeln..................................................................................................................471Bedingte Formatierung.........................................................................................................473

15.4.2. Services fr Zellbereiche.............................................................................................474Zugriff auf Zellen und Zellbereiche.....................................................................................474Zellabfrage...........................................................................................................................475Suche nach nicht-leeren Zellen in einem Bereich................................................................476Komplexe Zellabfragen........................................................................................................477

Vorgnger und Nachfolger suchen..................................................................................479Spaltenunterschiede suchen.............................................................................................479

15.4.3. Suchen und ersetzen.....................................................................................................48015.4.4. Zellen verbinden..........................................................................................................48015.4.5. Spalten und Zeilen: Zugriff, Einfgen und Lschen....................................................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 fllen............................................................................48415.4.10. Matrixformeln............................................................................................................48615.4.11. Mehrfachoperationen in einem Zellbereich...............................................................48715.4.12. Einheitlich formatierte Zellen....................................................................................48915.4.13. Sortieren.....................................................................................................................490

15.5. Tabellenbltter.....................................................................................................................49415.5.1. Verknpfung mit einem externen Tabellendokument.................................................49515.5.2. Abhngigkeiten suchen mit Detektiv-Funktionen.......................................................49615.5.3. Gliederungen................................................................................................................49815.5.4. Zellen kopieren, verschieben und einfgen.................................................................49815.5.5. Daten zwischen Dokumenten kopieren........................................................................499

ix

Datenfunktionen...................................................................................................................499Zwischenablage....................................................................................................................500bertragbarer Inhalt.............................................................................................................500

15.5.6. Datenpilot und Pivot-Tabellen.....................................................................................501Ein Beispiel fr 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 Tabellenbltter schtzen....................................................................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. Ausgewhlte Zellen......................................................................................................519Enumeration der ausgewhlten Zellen.................................................................................520Text auswhlen.....................................................................................................................521Die aktive Zelle....................................................................................................................521

15.8.2. Allgemeine Funktionalitt............................................................................................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 Prsentationsdokumente..................................................................................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.................................................................................................572Malinie...............................................................................................................................573Linieneigenschaften.............................................................................................................574Flchenfllung am Beispiel einer geschlossenen Bzierform..............................................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...................................................................................................................................584Bzierkurven........................................................................................................................586Verbinder..............................................................................................................................588

Eigene Klebepunkte erzeugen.........................................................................................591Pfeile ber Vorlagen hinzufgen.....................................................................................592

Eine Tabelle einfgen...........................................................................................................59316.3. Formulare.............................................................................................................................59416.4. Prsentationen......................................................................................................................596

16.4.1. Prsentationsfolien.......................................................................................................59816.4.2. Formen fr Prsentationen...........................................................................................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. Schaltflche..................................................................................................................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

Whrungsfeld.......................................................................................................................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 zurck.................................................................................................................675

18.7.4. Die Debug-Information ermitteln................................................................................675Alternative Version (V. Lenhardt).......................................................................................679

18.7.5. Werte fr 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. Einfhrung und Organisation 13

1. Einfhrung und OrganisationAm Anfang stand die erste Auflage von OpenOffice.org Macros Explained (OOME). Ein paar Jahrespter stellte ich die zweite Auflage fertig, aktualisiert als Anpassung an die OpenOffice.org (OOo)-Version 2.x. Diese zweite Auflage wurde jedoch nie verffentlicht. Nun denke ich, es wird Zeit frdie dritte Auflage.Der grte Teil des Inhalts der vorherigen Auflagen ist erhalten geblieben. Die ersten Kapitel, die dieSprachsyntax behandeln, sind im wesentlichen unverndert bis auf die neu hinzugekommenenSprachelemente.Seit der letzten Verffentlichung hat sich die Anzahl der von OOo untersttzten Services mehr alsverdoppelt, und die Funktionalitt ist erheblich erweitert worden. Leider ist der Leistungsumfanggrer, 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 Funktionalitten untersttzt.Das Dokument enthlt Schaltflchen zum Starten der Makros, die im Text vorgestellt werden. Das istzwar fantastisch, wenn man den Originalquelltext liest, produziert aber beim Ausdrucken uner-wnschte 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. Unglckli-cherweise ist meine Zeit schon ber Gebhr beansprucht, und es ist schwierig, allen persnlich zuHilfe zu kommen. Ich helfe gerne in meiner nicht vorhandenen Freizeit, aber bitte, nutzen Sie nachMglichkeit schon vorhandenes Material, Mailinglisten und Foren. Gelegentlich biete ich Lsungenauf Vergtungsbasis an, aber fr grere Projekte fehlt mir einfach die Zeit.Ich begre 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) weitergefhrt wird. Ich verwende in diesem Buchden ursprnglichen Namen OpenOffice oder OOo als Oberbegriff fr jedes der drei Produkte.AOO und LO sind unabhngig voneinander in stndigem Wandel, daher hneln sich mit der Zeit dieAPIs, Funktionalitten und Benutzerschnittstellen immer weniger. Es kann dazu fhren, 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 Vergtung fr meine Arbeit an diesem Dokument.Am besten probieren Sie es aus, was in Ihrer Arbeitsumgebung funktioniert. Inspizieren Sie auch dieObjektinstanzen, um die von ihnen untersttzten 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 fhrt 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 fr den spteren Gebrauch gespeicherte Folge von Anweisungen oder Tastenkom-binationen. Ein Beispiel fr ein einfaches Makro wre eines, das Ihre Adresse ausgibt. Makros unter-sttzen Anweisungen fr 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 grer 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 frBeginners All-purpose Symbolic Instruction Code.) blicherweise bindet man ein Makro an eineTastenkombination oder ein Werkzeugleisten-Symbol, um es schnell starten zu knnen.Ein Dialog oder Dialogfenster ist ein Fenstertyp fr den Dialog mit einem Nutzer. Der Dialogmag dem Nutzer Informationen bieten oder eine Eingabe vom Benutzer erwarten. Sie knnen 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 Ablufe von OpenOffice.org kennenzulernen, ist es nicht immer der beste Ansatz. Makrossind vor allem ntzlich, wenn dieselbe Aufgabe immer wieder durchgefhrt werden muss, oder wennman einen einzigen Tastendruck wnscht fr etwas, das normalerweise mehrere Schritte bentigt.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 grndlich recherchieren,um sich zu vergewissern, dass OOo es auch wirklich nicht kann. Zum Beispiel findet man in einigenOpenOffice.org-Mailinglisten regelmig die Bitte um ein Makro zum Entfernen leerer Abstze.Diese Funktionalitt steht ber die AutoKorrektur zur Verfgung (Extras > AutoKorrektur-Optio-nen > Optionen: Leere Abstze entfernen). Man kann auch regulre Ausdrcke verwenden, umLeerzeichen zu suchen und zu ersetzen. Es gibt eine Zeit und einen Anlass fr Makros und eine Zeitfr andere Lsungen. Dieses Kapitel wird Sie auf die Zeiten vorbereiten, wenn ein Makro das Mittelder Wahl ist.

2.1. MakrospeicherungIn OpenOffice.org werden logisch zusammengehrende Prozeduren in einem Modul gespeichert. EinModul knnte zum Beispiel Prozeduren enthalten zum Auffinden typischer Fehler, die weitere Bear-beitung erfordern. Logisch zusammenhngende 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 knnen Bibliotheken, Moduleund Makros enthalten.Container Ein Bibliothekscontainer enthlt keine, eine oder mehrere Bibliotheken.Bibliothek Eine Bibliothek enthlt keine, eine oder mehrere Module und Dialoge.Modul Ein Modul enthlt 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 bentigt, 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 bentigen und jedes Dokument eine Kopiedavon htte und Sie dann nderungen an dem Makro vornehmen wollten, mssten Sie es in jedemDokument ndern, das dieses Makro enthlt. In einem Dokument gelagerte Makros sind nur fr die-ses Dokument sichtbar. Es ist daher nicht einfach, ein Makro in einem Dokument von auerhalb desDokuments aufzurufen.

Tipp Speichern Sie keine Makros in einem Dokument, die von auerhalb des Dokuments aufgerufen werden (von seltenen Ausnahmen abgesehen), denn Makros in einem Dokument sind nur fr 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 frOOo-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 enthlt eine oder mehrere Bibliotheken, und eine Bibliothek enthlt 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 knnen sich von denen der Bildschirmfotos unter-scheiden. Unterschiedliche OOo-Versionen knnen unterschiedliche Symbole und Farben nutzen, und es wird mehr als nur ein Symbol-Set untersttzt. ber Extras > Optionen > OpenOffice.org > Ansicht knnen Sie Gre 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 Funktionalitten 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 knnen Bibliotheken von einem Bibliothekscontainer in einen anderen importieren. Sie importieren ein Modul dadurch, dass Sie die Bibliothek importieren, die das Modul ent-

hlt. Es ist ber das GUI nicht mglich, 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 verfgbar sind.

Die Standardbibliothek wird von OOo automatisch angelegt und kann nicht importiert werden. Makros in einer Bibliothek sind erst verfgbar, 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 fr Makros, die ber Schaltflchen 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 Schaltflche Neu das Gerst einer neuen Subroutine in der ausgewhltenBibliothek (s. Bild 1 und Bild 2). Wenn die Bibliothek noch kein Modul enthlt, wird nach einer Na-mensabfrage ein neues angelegt.

2. Die Grundlagen 17

ber die Schaltflche 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 lschen oder umzubenennen.

Bild 3. Die Registerkarte Module der OOo-Makroverwaltung.Verwenden Sie die Registerkarte Bibliotheken (s. Bild 4), um Bibliotheken anzulegen, zu lschen,umzubenennen, zu importieren oder zu exportieren.

Bild 4. Die Registerkarte Bibliotheken der OOo-Makroverwaltung.Aus der Ort-Aufklappliste whlen Sie den gewnschten 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 whlen Umbenennen.

18 2. Die Grundlagen

2.3. MakrospracheDie OpenOffice.org-Makrosprache basiert auf der Programmiersprache BASIC. Die Standardmakro-sprache heit offiziell StarBasic, wird aber auch als OOo Basic oder nur Basic bezeichnet. Viele an-dere Programmiersprachen knnen zur Automatisierung von OOo genutzt werden. OOo bringt prak-tische Untersttzung fr 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 enthlt, die es benutzt, bedeutet folglich der Besitz des Dokuments auchden Besitz der Makros. Das ist eine praktische Methode fr 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 hinzuzufgen, mssen Sie das Dokument zur Bearbei-tung ffnen. ffnen Sie als erstes ein neues Textdokument, das den Namen Unbenannt 1erhlt vorausgesetzt, dass momentan kein anderes Dokument ohne Namen geffnet ist.

2. ber Extras > Makros > Makros verwalten > OpenOffice.org Basic ffnen Sie den Dialogfr 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. Whlen Sie Unbenannt 1 aus der Ort-Aufklappliste.

Bild 5. Die Registerkarte Bibliotheken der OOo-Makroverwaltung.5. Klicken Sie auf Neu, um den Dialog fr eine neue Bibliothek zu ffnen.

Bild 6. Der Dialog Neue Bibliothek.

2. Die Grundlagen 19

6. Der Standardname ist Library1, nicht gerade aussagekrftig. Verwenden Sie einen aussage-krftigen Namen und klicken Sie OK. Die neue Bibliothek steht nun in der Liste. Fr diesesBeispiel habe ich die Bibliothek HelloWorld genannt.

Bild 7. Die neue Bibliothek steht in der Liste.7. In der Registerkarte Module whlen 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 geffnet 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 aussagekrftigen Namen ein klicken auf OK. Zusammen mit dem neu er-

stellten Modul wird schlielich 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 lschen werde, wenn ich mit dem Beispiel fertig bin. Nennen Sie es nach Ihren Wn-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 geffnet.

2.5. Integrierte Entwicklungsumgebung (Integrated Debugging Environment)

In der Integrierten Entwicklungsumgebung (IDE) fr Basic erstellen Sie Makros und fhren sie aus(s. Bild 11). Die IDE bietet wesentliche Funktionalitten auf kleinem Raum. Die Symbole der Werk-zeugleiste sind in der Tabelle 1 erlutert. 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 auswhlen.

2. Die Grundlagen 21

Bild 11. Die Integrierte Entwicklungsumgebung fr 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 gehrt, dann wirddas ganze Dokument gespeichert.

Ctrl+P Makro zum Drucker senden.

Ctrl+V Zwischenablage einfgen.

Ctrl+Z Letzte Aktivitt rckgngig machen.

Ctrl+V Letzte rckgngig gemachte Aktivitt wiederherstellen.

Objektkatalog ffnen (s. Bild 12). Doppelklicken Sie auf das ausgewhlte Makro.

OOo-Makrodialog ffnen (s. Bild 2). Whlen Sie ein Makro aus und klicken Sie auf Bear-beiten oder Ausfhren.Shortcut fr Extras > Makros > Makros verwalten > OpenOffice.org Basic.Modul auswhlen. ffnet die OOo-Makroverwaltung und zeigt die Registerkarte Module an (s. Bild 3). Whlen Sie ein Modul und klicken auf Bearbeiten.

OOo-Hilfe ffnen. Sie enthlt eine Vielzahl ntzlicher Beispiele fr Basic.

Kompilierungssymbol zum Prfen 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 Ausfhren des ersten Makros im aktuellen Modul. Ist es angehalten (von einem Haltepunkt

oder bei Einzelschritten), wird es fortgesetzt. Um ein anderes Makro auszufhren, nutzen

Sie . Damit ffnen Sie den OOo-Makrodialog. Whlen Sie das gewnschte Makro undklicken auf Ausfhren.

Shift+F5 Stoppen Sie das gerade laufende Makro.

Shift+F8 Prozedurschritt zur nchsten Anweisung. Wenn ein Makro an einem Haltepunkt steht, wirddie aktuelle Anweisung ausgefhrt. Dient auch zum Start eines Makros im Einzelschritt-modus.

F8 Einzelschritt. Wie Prozedurschritt, auer dass der Schritt, wenn die aktuelle Anweisung einanderes Makro aufruft, in dieses Makro hineinfhrt, so dass die Beobachtung dort weiter-geht.

Rcksprung. Fhrt das Makro bis zum Ende der aktuellen Subroutine oder Funktion aus.

Shift+F9 Haltepunkt ein/aus an der aktuellen Cursorposition in der IDE. Links neben der Zeile wird

ein Symbol ( ) platziert, das zeigt, dass fr diese Zeile ein Haltepunkt gesetzt ist. Sie knnen auch in diesen Haltepunktbereich doppelklicken, um einen Haltepunkt ein- oder auszuschalten.

ffnet den Dialog zur Verwaltung der Haltepunkte (s. Bild 17), mit dem Sie wahlweise Haltepunkte ein- oder ausschalten knnen. Zustzlich knnen Sie einstellen, nach wie vie-len Durchlufen ein Haltepunkt erstmalig ausgelst wird.

F7 Beobachter-Symbol. Fgt die Variable unter dem aktuellen Cursor in der IDE in das Beob-achterfenster ein. Sie knnen alternativ den Variablennamen in die Beobachter-Einfgezei-le eintragen und Enter drcken.

Klammernsuche.

Basic-Quellcode einfgen. ffnet einen Dialog zur Suche einer Datei mit Basic-Code, der dann eingefgt wird.

Das aktuelle Modul als Textdatei speichern. OOo speichert Module auf der Festplatte in ei-nem spe