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/count.php?id=oome_3_0_deutsch.pdf · Andrew Pitonyak BASIC-Makros für OpenOffice und LibreOffice Von den Grundlagen zu konkreten

  • Upload
    donhu

  • View
    240

  • Download
    0

Embed Size (px)

Citation preview

  • 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