DE/Doku/Allgemein/13 Makros

From The Document Foundation Wiki
< DE‎ | Doku‎ | Allgemein
Jump to: navigation, search

Ihr erstes Makro

Ralf/Nino (Name) (Name)
Kü (neu!) Nino Jochen k-j

Ein Makro ist eine gespeicherte Abfolge von Kommandos oder Tastatureingaben, auf die für eine spätere Verwendung wieder zugegriffen werden kann.

Die LibreOffice-Makrosprache ist sehr flexibel und erlaubt die Automatisierung sowohl einfacher als auch komplexer Aufgaben. Makros sind immer dann hilfreich, wenn Sie eine Aufgabe immer wieder auf die gleiche Art und Weise erledigen müssen oder wenn Sie eine Aufgabe auf Knopfdruck abarbeiten möchten, für die Sie eigentlich mehrere Schritte benötigen würden.

Die LibreOffice-Makrosprache basiert auf der Programmiersprache BASIC - meist „LibreOffice Basic“ oder einfach nur „Basic“ genannt. Weil LibreOffice Basic naturgemäß über sehr viele Programmfunktionen verfügt, ist es recht komplex und damit zu Beginn recht lernintensiv. Um Sie in die Nutzung von Makros einzuführen, schlagen wir Ihnen daher vor, erst mal mit der Ausführung von fertigen Makros zu beginnen, die von Anderen erstellt wurden, oder den eingebauten Makro-Rekorder zu nutzen, mit welchem Sie Tastaturbefehle aufzeichnen und als Makro für eine spätere Nutzung speichern können.

Derzeit wird der Makro-Recorder in LibreOffice noch als „Experimentell“ eingestuft. Um ihn nutzen zu können, müssen Sie daher unter Extras → Optionen → LibreOffice → Allge­mein die Option „Aktiviere Experimentelle Funktionen“ aktivieren.

Abbildung 1
Abbildung 1: Makrorekorder einschalten – Optionen für experimentelle (unstabile) Funktionen


In LibreOffice werden die meisten Programmfunktionen durch Absetzen (dispatch) eines Kommandos eingeleitet, welches dann abgefangen und umgesetzt wird. Der Makro-Recorder nimmt genau diese abgesetzten Kommandos auf. Weitergehende Informationen finden Sie im Abschnitt „Das Dispatch-Framework“ auf Seite XY.

Ein vorhandenes Makro hinzufügen

Ralf (Name) (Name)
Kü (neu!) Nino, k-j Jochen k-j

Der erste Schritt, Makroprogrammierung zu erlernen, ist, vorhandene Makros zu finden und zu benutzen. Im Folgenden gehen wir davon aus, dass Ihnen ein Quelltext eines Makro vorliegt. Es spielt keine Rolle, ob das Makro aus dem Internet, einer E-Mail, einem Office-Dokument oder aus diesem Buch stammt. Wir beginnen mit dem Beispiel aus Listing 1.

Listing 1:

Sub HalloWelt
Print „Hallo“
End Sub

Um dieses Makro auszuführen, müssen Sie es zunächst in einem sogenannten Modul abspeichern. Module sind wiederum in Bibliotheken zusammengefasst. Bibliotheken werden wiederum in Bibliothekscontainern gespeichert. Weitergehende Informationen finden Sie im Abschnitt „Organisieren Sie Ihre Makros“ auf Seite XY. Zum Erstellen der Bibliothek, die Ihr Makro aufnehmen soll, verfahren Sie wie folgt:

  1. Öffnen Sie den Makro-Dialog mit Extras ▸ Makros ▸ Makros verwalten ▸ LibreOffice Basic (siehe Abb. XYZ)
  2. Klicken Sie auf Verwalten, um den Verwalten-Dialog zu öffnen (siehe Abb. XYZ).
  3. Öffnen Sie die Registerkarte Bibliotheken.
  4. Wählen Sie den Ort „Meine Makros und Dialoge“ (dieser Ort sollte voreingestellt sein).
  5. Öffnen Sie durch einen Klick auf "Neu" den Dialog "Neue Bibliothek". Geben Sie einen Bibliotheksnamen ein (zum Beispiel „TestBibliothek“) und klicken Sie auf OK.
  6. Wählen Sie die Registerkarte Module.
  7. In der Modulliste erweitern Sie den Punkt "Meine Makros" und wählen TestBibliothek. Ein Modul namens Modul1 existiert bereits und kann Ihr Makro aufnehmen. Sie können aber auch durch Klick auf Neu ein neues Modul in TestBibliothek erstellen.
  8. Wählen Sie das Modul1 – oder das neue Modul, das Sie erstellt haben – und öffnen Sie durch Klick auf Bearbeiten die integrierte Entwicklungsumgebung (IDE).
  9. Die IDE ist ein Texteditor für Makros, welcher Ihnen erlaubt, Makros einzugeben und zu bearbeiten. Kopieren Sie das obige Makro in die IDE (oder tippen Sie es ein).

Beim Anlegen eines neuen Moduls wird automatisch ein leeres funktionsloses Makro namens „Main“ angelegt.

Listing 2:

Sub Main
End Sub

Fügen Sie Ihr neues Makro entweder vor der Zeile „Sub Main“ oder nach der Zeile „End Sub“ ein. Im Listing 3 wurde das neue Makro vor „Sub Main“ eingefügt.

Listing 3:

REM ***** BASIC *****
Sub HalloWelt
Print „Hallo“
End Sub

Sub Main End Sub

Klicken Sie auf das Ausführen-Symbol Image in der Werkzeugleiste oder drücken Sie die Taste F5, um das oberste Makro aus dem Modul auszuführen. Mithilfe des Dialogs LibreOffice Basic Makros, den Sie entweder mittels Makro auswählen-Symbol Image oder über den Menübefehl Extras ▸ Makros ▸ Verwalten ▸ LibreOffice Basic aufrufen können, können Sie auf jedes beliebige Makro in einem Modul zugreifen und es ausführen.

Einfaches Makro selbst erstellen

Kü (neu!) Nino Jochen k-j

Für die wiederholte Eingabe von identischen Informationen können Sie die Zwischenablage benutzen. Aber die Zwischenablage wird bei jeder neuen Nutzung verändert, so dass Ihre Information unter Umständen verloren geht. Wenn Sie die Information als Makro speichern, können Sie diese unkompliziert wiederverwenden. In vielen einfachen Fällen - wie auch in unserem Beispiel - können Sie statt eines Makros ebenso auch einen AutoText verwenden. Uns kommt es hier aber auf den beispielhaften Einsatz von Makros an.

  1. Starten Sie mittels Extras ▸ Makros ▸ Makro aufzeichnen den Makro-Recorder. Ein kleines Dialogfenster zeigt die laufende Aufnahme an.
  2. Tippen Sie nun den zu speichernden Text ein oder führen Sie die gewünschten Schritte aus. Im Beispiel wird der Schriftzug „LibreOffice“ benutzt.
  3. Klicken Sie auf die Schaltfläche "Aufzeichnung beenden" im kleinen Dialogfenster, um die Aufnahme zu beenden, das Makro zu speichern und den Dialog "LibreOffice Basic Makros" zu öffnen.
  4. Öffnen Sie den Bibliothekscontainer „Meine Makros“ und wählen Sie darin die Bibliothek „Standard“. Bitte beachten Sie, dass alle Bibliotheken ein Modul dieses Namens enthalten. Klicken Sie auf die Schaltfläche "Neues Modul", um ein neues Modul zu erzeugen, welches das aufgezeichnete Makro aufnehmen soll.
  5. Der voreingestellte Modulname lautet „Modul1“. Überschreiben Sie diesen durch einen aussagekräftigeren - wie zum Beispiel "Aufgenommen".
  6. Wählen Sie das erstellte Modul aus und geben Sie in das Feld oben links den gewünschten Namen des Makros ein – zum Beispiel „LibOSchriftzug“. Klicken Sie auf Speichern, um das Makro zu speichern.

Wenn Sie alle Schritte wie beschrieben ausgeführt haben, enthält die Standard-Bibliothek nun ein Modul namens „Aufgenommen“, welches das Makro namens „LibO-Schriftzug“ enthält (siehe Abb. 3). Hier sieht man auch das beim Erstellen des Moduls automatisch hinzugefügte Makro namens „Main“.

Makro ausführen

Kü (neu!) Nino k-j Jochen

Öffnen Sie mittels Extras ▸ Makros ▸ Makro ausführen den Makro-Selektor-Dialog. Wählen Sie das oben erstellte Makro aus und klicken Sie auf die Schaltfläche Ausführen.

Image
Abb. 3: Wählen Sie Ihr Makro aus und klicken Sie auf Ausführen.

Makros können auch auf andere Weise ausgeführt werden. So können Sie zum Beispiel über Extras ▸ Makros ▸ Makros verwalten ▸ LibreOffice Basic den Makro-Verwaltungsdialog aufrufen, der ebenfalls ein Ausführen-Symbol enthält. Wenn Sie im Verwaltungsdialog auf Verwalten klicken, starten Sie den "Makro Organizer". Dieser Dialog öffnet gewöhnlich schneller. Allerdings ist die Auswahl ist etwas langsamer.

Makro-Code ansehen und bearbeiten

Kü (neu!) Nino Erhardt k-j

Öffnen Sie den Dialog LibreOffice Basic Makros mittels Extras ▸ Makros ▸ Makros verwalten ▸ LibreOffice Basic. Wählen Sie das weiter oben gespeicherte Makro aus und klicken Sie auf Bearbeiten. Die Basic-IDE öffnet sich und das Makro kann hier bearbeitet werden.

Listing 4: Dieser Makro-Code wurde durch die Aufzeichnung erzeugt
REM ***** BASIC *****

Sub Main

End Sub

sub LibOSchriftzug
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Text"
args1(0).Value = "LibreOffice"

dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args1())


end sub

Das Makro in Listing 4 sieht komplizierter aus als es ist. Die nachfolgenden Erklärungen werden Ihnen helfen, die meisten der verwendeten Befehle der Reihe nach zu verstehen. Wenn Sie sich nicht für die Details interessieren, können Sie den Text „LibreOffice“ durch einen beliebigen anderen Text austauschen – dieser Text wird stattdessen beim Ausführen des Makros eingefügt.

Kommentare starten mit REM

Kü (neu!) Nino Erhardt k-j

Das Schlüsselwort REM, eine Abkürzung des englischen Wortes für remark (Anmerkung) leitet einen Makro-Kommentar ein. Der Rest der Zeile nach dem Wort REM wird ignoriert. Alternativ kann auch ein einfaches Anführungszeichen oben (') zur Kennzeichnung von Kommentaren benutzt werden.

Tipp
LibreOffice Basic-Schlüsselworte kennen keine Groß- und Kleinschreibung – demnach sind REM, rem und Rem gleichwertig. Wenn Sie in der API definierte symbolische Konstanten verwenden, sollten Sie die Groß- und Kleinschreibung jedoch beachten, um auf der sicheren Seite zu sein.

Subroutinen mit SUB festlegen

Kü (neu!) Nino Erhardt k-j

Routinen (oder Prozeduren) werden durch das Schlüsselwort SUB eingeleitet.

Einzelne Makros werden in Routinen gespeichert, die mit SUB beginnen. Das Ende einer Routine wird durch die Zeile END SUB gekennzeichnet. Der Code beginnt mit der Definition der Routine namens Main, die leer ist und nichts bewirkt. Die nächste Routine, zum Beispiel LibOSchriftzug, enthält den generierten Code.


Tipp
LibreOffice erstellt jedesmal eine leere Routine namens Main, wenn ein neues Modul erzeugt wird.


Für Interessierte zwei Anmerkungen:

  • Sie können Makros auch Werte (Argumente) übergeben. Dies kann jedoch nicht im Rahmen dieser Einführung abgehandelt werden. Bitte informieren Sie sich in der einschlägigen Literatur darüber. Makros, welche durch Aufzeichnung entstanden sind, akzeptieren keine Argumente.
  • Funktionen sind spezielle Routinen, die einen Wert zurückgeben. Sie werden durch das Schlüsselwort FUNCTION anstatt SUB eingeleitet. Aufgezeichnete Makros sind immer vom Typ SUB.

Variablendefinition mittels DIM

Kü (neu!) Nino Erhardt k-j

Um eine Information für eine spätere Verwendung zu speichern, können Sie sie auf ein Stück Papier schreiben. Auch eine Variable enthält eine Information, die später gelesen oder verändert werden kann. Der DIM-Befehl ähnelt einem Stück Papier, das sie auf Ihren Schreibtisch legen, um später darauf eine Information oder eine Nachricht zu vermerken.

Das Makro LibOSchriftzug definiert die Variablen document und dispatcher vom Typ Objekt. Variablen können auch vom Typ String, Integer oder Date sein. Weiter unten wird noch eine weitere Variable, args1, als Feld (array) von Property-Werten definiert. Variablen vom Typ array können mehrere unterschiedliche Werte enthalten, ähnlich wie unterschiedliche Blätter in einem einzigen Ordner zusammengefasst werden können. Die Werte eines Arrays sind aufsteigend nummeriert und beginnen mit 0. In unserem Fall gibt es nur einen Wert, daher bleibt es bei der 0 in den eckigen Klammern.

Das Makro im Zusammenhang

Kü (neu!) Nino Erhardt k-j

Vorab: Für das Gesamtverständnis ist es nicht unbedingt erforderlich, alle der im Folgenden beschriebenen Details zu verstehen.

Die erste Zeile definiert den Start des Makro:

sub LibOSchriftzug

Dann werden 2 Variablen deklariert:

dim document as object
dim dispatcher as object

ThisComponent bezieht sich auf das aktuelle Dokument.

Die Dokumenteigenschaft (Property) CurrentController referenziert einen Dienst, der das Dokument sozusagen „kontrolliert“. Wenn Sie zum Beispiel etwas eingeben, dann „bemerkt“ das der Current Controller. Der Current Controller schickt (dispatch) dann die Änderungen an den Dokumentrahmen (Frame).

Die Property Frame eines Controllers ergibt den Hauptframe für ein Dokument. Daher referenziert die Variable document in der folgenden Zeile den Dokumentrahmen, der die verschickten Befehle erhält.

document = ThisComponent.CurrentController.Frame

Die meisten Aufgaben in LibreOffice werden durch ein Kommando, welches abgeschickt (dispatched) wird, ausgeführt. LibreOffice enthält einen Dienst namens DispatchHelper, der den größten Teil der Dispatch-Arbeit erledigt, wenn in Makros Dispatch-Befehle verwendet werden. Die Methode CreateUnoService akzeptiert den Namen eines Dienstes (Service) und versucht, eine Instanz dieses Dienstes zu erzeugen. Nach der Ausführung enthält die Variable dispatcher eine Referenz zu einem DispatchHelper.

dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

Dann wird ein Feld (Array) von Eigenschaften (Properties) deklariert. Jede Property hat einen Namen und einen Wert, es handelt sich also um ein Namen/Werte-Paar. Das hier erzeugte Feld besitzt eine Property mit Index Null.

dim args1(0) as new com.sun.star.beans.PropertyValue

Dann wird die Property mit dem Namen „Text“ sowie dem Wert „LibreOffice“ versehen:

args1(0).Name = "Text"
args1(0).Value = "LibreOffice"

Der DispatchHelper schickt mit dem Kommando uno:InsertText einen Dispatch an den Dokumentrahmen, der in der Variable Dokument gespeichert ist. Die Erklärung der Bedeutung der beiden Argumente „Rahmennummer“ und „Suchflags“ würde diese Einführung sprengen. Das letzte Argument schließlich ist das Feld mit den Property-Werten, die bei der Ausführung des Befehls InsertText benutzt werden sollen.

dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args1())

Als letztes wird die Routine beendet:

end sub

Makro erstellen

Kü (neu!) k-j Erhardt Jochen

Vor Erstellung eines Makros ist es wichtig, sich zwei Fragen zu stellen:

  1. Kann die Aufgabe als eine einfache Reihe von Befehlen geschrieben werden?
  2. Können die Schritte so angeordnet werden, dass der letzte Befehl den Cursor für den nächsten Befehl an der richtigen Stelle bereitstellt?


Die integrierte Entwicklungsumgebung

k-j k-j Jochen Erhardt

Eine integrierte Entwicklungsumgebung (Integrated development environment, kurz IDE) ist eine Zusammenstellung von Programmierwerkzeugen, um die Erstellung von Software zu vereinfachen. LibreOffice enthält sehr leistungsfähige Werkzeuge, mit denen Sie Ihre Makros ausführen, bearbeiten und Fehler darin finden können. Abbildung xyz zeigt Ihnen die wichtigsten Elemente der LibreOffice-IDE. Der große Bereich in der Mitte, in dem der Makrocode angezeigt wird, ist das Editor-Fenster. Vie­le Funktionen wie Stopp, Haltepunkt, Einzelschritt und das Beobachtungsfenster die­nen als einfacher und effektiver Debugger für Makrocode.

Hinweis
Ein Debugger ist einfach ein Werkzeug zum Auffinden, Diagnostizieren und Beheben von Fehlern in Software.

Ein umfangreicheres Beispiel

Kü (neu!) k-j Erhardt Jochen

Als komplizierteres Beispiel für die Aufnahme eines Makros mit dem Makrorekorder werden aus Webseiten Zeilen und Spalten von Datensätzen kopiert und als Tabellen in einem Textdokument eingefügt. Zuerst kopiert man die Tabelle von der Website in die Zwischenablage. Um seltsame Formatierungen und Schriftarten zu vermeiden, wird der Text als unformatierter Text in ein Writer-Dokument eingefügt. Dann wird der Text mit Tabulatoren zwischen den Spalten neu formatiert, so dass der Befehl Tabelle ▸ Umwandeln ▸ Text in Tabelle verwendet werden kann, um den Text in eine Tabelle zu konvertieren.

Danach wird der Text überprüft, ob dafür ein Makro aufgenommen werden kann, um den Text einfach zu formatieren. Als ein Beispiel soll die FontWeight-Konstanten-Gruppe aus der API-Webseite dienen. Die erste Spalte gibt den Namen der Konstanten an. Jedem Namen folgt ein Leerzeichen und ein Tabulator.

Die erste Spalte soll den beinhalteten numerischen Wert, die zweite Spalte den Namen und die dritte Spalte die Beschreibung enthalten. Eine kurze Kontrolle ergibt, dass alle Zeilen außer DontKnow und NORMAL einen numerischen Wert haben. Es wird für diese beiden Zeilen die Werte 0 und 100 festgelegt und manuell eingeben.

Die Daten können auf verschiedene Weisen bereinigt werden – dabei sind alle von ihnen leicht. Das erste Beispiel verwendet Tastenanschläge, um den Cursor an den Anfang der Zeile mit dem Text THIN zu setzen.


  1. Verwenden Sie Extras ▸ Makros ▸ Makro aufzeichnen, um die Aufnahme zu starten.
  2. Drücken Sie Strg+, um den Cursor an den Anfang des "specifies" zu bewegen.
  3. Drücken Sie die Rücktaste zweimal, um den Tabulator und das Leerzeichen zu löschen.
  4. Drücken Sie den Tabulator, um einen Tabulator ohne Leerzeichen nach dem Namen der Konstanten hinzuzufügen.
  5. Drücken Sie Löschen, um den Kleinbuchstaben s zu löschen und geben Sie dann S ein.
  6. Drücken Sie Strg+ zweimal, um den Cursor an den Anfang der Zahl zu bewegen.
  7. Drücken Sie Strg+⇧ Umschalt+, um die Zahlen zu markieren und den Cursor vor das %-Zeichen zu bewegen.
  8. Drücken Sie Strg+C, um den ausgewählten Text in die Zwischenablage zu kopieren.
  9. Drücken Sie End, um den Cursor an das Ende der Zeile zu bewegen.
  10. Drücken Sie die Rücktaste zweimal, um die beiden Leerzeichen zu entfernen.
  11. Drücken Sie Pos1, um den Cursor an den Anfang der Zeile zu bewegen.
  12. Drücken Sie Strg+V, um die ausgewählte Zahl am Anfang der Zeile einzufügen.
  13. Das Einfügen des Wertes fügt ebenfalls ein Leerzeichen ein, daher drücken Sie die Rücktaste, um das zusätzliche Leerzeichen zu entfernen.
  14. Drücken Sie Tabulator, um einen Tabulator zwischen der Zahl und dem Namen einzufügen.
  15. Drücken Sie Pos1, um zum Anfang der Zeile zu gelangen.
  16. Drücken Sie den , um den Cursor in die nächste Zeile zu bewegen.
  17. Stoppen Sie die Aufzeichnung des Makros und speichern Sie das Makro.

Es dauert viel länger, die Schritte zu lesen und zu schreiben als das Makro aufzeichnen. Arbeiten Sie langsam und denken Sie über die Schritte nach, die Sie tun. Mit der Praxis geht das in Fleisch und Blut über.

Das erzeugte Makro wurde so geändert, dass die Nummerierungen in den Kommentaren den oberen Schritten entsprechen.

sub CopyNumToCol1
rem -------------------------------------------------------------
rem Variablen definieren
dim document as object
dim dispatcher as object dispatcher as object
rem -------------------------------------------------------------
rem Zugang zum Dokument erhalten
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") = createUnoService("com.sun.star.frame.DispatchHelper")

rem (2) Strg + Pfeil nach rechts drücken, um den Cursor an den Anfang des "specifies" zu bewegen.
dispatcher.executeDispatch(document, ".uno:GoToNextWord", "", 0, Array())

rem (3) Rücktaste zweimal drücken, um den Tabulator und das Leerzeichen zu löschen.
dispatcher.executeDispatch(document, ".uno:SwBackspace", "", 0, Array())

rem -------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:SwBackspace", "", 0, Array())

rem (4) Tabulator drücken, um einen Tabulator ohne Leerzeichen nach dem Namen der Konstanten hinzuzufügen.
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Text"(0).Name = "Text"
args4(0).Value = CHR$(9)

dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args4())
rem (5) Löschen drücken, um den Kleinbuchstaben s zu löschen und ....
dispatcher.executeDispatch(document, ".uno:Delete", "", 0, Array())

rem (5) ... dann S eingeben.
dim args6(0) as new com.sun.star.beans.PropertyValue
args6(0).Name = "Text"(0).Name = "Text"
args6(0).Value = "S"

dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args6())

rem (6) Strg + Pfeil nach rechts zweimal drücken, um den Cursor an den Anfang der Zahl zu bewegen.
dispatcher.executeDispatch(document, ".uno:GoToNextWord", "", 0, Array())

rem -------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:GoToNextWord", "", 0, Array())

rem (7) Strg + Umschalt + Pfeil nach rechts drücken, um die Zahlen zu auszuwählen.
dispatcher.executeDispatch(document, ".uno:WordRightSel", "", 0, Array())

rem (8) Strg + C drücken, um den ausgewählten Text in die Zwischenablage zu kopieren.
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

rem (9) Ende drücken, um den Cursor an das Ende der Zeile zu bewegen.
dispatcher.executeDispatch(document, ".uno:GoToEndOfLine", "", 0, Array())

rem (10) Rücktaste zweimal drücken, um die beiden Leerzeichen zu entfernen.
dispatcher.executeDispatch(document, ".uno:SwBackspace", "", 0, Array())

rem -------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:SwBackspace", "", 0, Array())

rem (11) Pos1 drücken, um den Cursor an den Anfang der Zeile zu bewegen.
dispatcher.executeDispatch(document, ".uno:GoToStartOfLine", "", 0, Array())

rem (12) Strg + V dürcken, um die ausgewählte Zahl am Anfang der Zeile einzufügen.
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array()).executeDispatch(document, ".uno:Paste", "", 0, Array())

rem (13) Rücktaste drücken, um das Leerzeichen zu entfernen.
dispatcher.executeDispatch(document, ".uno:SwBackspace", "", 0, Array())

rem (14) Tabulator drücken, um einen Tabulator zwischen Zahl und Name einzufügen.
dim args17(0) as new com.sun.star.beans.PropertyValue
args17(0).Name = "Text"(0).Name = "Text"
args17(0).Value = CHR$(9)

dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args17())

rem (15) Pos1 drücken, um zum Anfang der Zeile zu gelangen.
dispatcher.executeDispatch(document, ".uno:GoToStartOfLine", "", 0, Array())

rem (16) Pfeil nach unten drücken, um den Cursor in die nächste Zeile zu bewegen.
dim args19(1) as new com.sun.star.beans.PropertyValue
args19(0).Name = "Count"(0).Name = "Count"
args19(0).Value = 1
args19(1).Name = "Select"
args19(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args19()).executeDispatch(document, ".uno:GoDown", "", 0, args19())
end sub

Cursor-Bewegungen werden (im Gegensatz zur Suche) für alle Operationen verwendet. Wenn das Makro bei der DontKnow-Zeile angelangt, wird das Wort „weight“ an den Anfang der zeile bewegt, und das erste "The" durch "She" geändert. Dies ist nicht perfekt, daher sollte das Makro für die Zeilen nicht laufen, die nicht das notwendige Format haben. Vielmehr sollten diese manuell geändert werden.

Schnelles Ausführen eines Makros

Kü (neu!) k-j Jochen Erhardt

Wenn Sie ein Makro entwickeln, ist es mühsam, immer wieder das Makro über Extras ▸ Makros ▸ Makro ausführen (siehe Abbildung xyz) laufen zu lassen. Das Makro kann aus der IDE (integrierten Entwicklungsumgebung) ausgeführt werden. Verwenden Sie Extras ▸ Makros ▸ Makros verwalten ▸ LibreOffice Basic und öffnen Sie den Basic-Makro-Dialog.

Wählen Sie das Makro und klicken Sie auf Bearbeiten, um das Makro im IDE zu öffnen. Die IDE hat ein "Basic-Programm ausführen"-Symbol in der Symbolleiste, das als erstes Makro in der IDE läuft. Sofern Sie das erste Makro nicht ändern, ist es das leere Makro mit dem Namen Main. Ändern Sie Main, so dass es wie in Listing xyz dargestellt lautet

Sub Main
:CopyNumToCol1
End Sub

Jetzt können Sie das Makro "CopyNumToCol1" durch wiederholtes Klicken auf das "Basic-Programm ausführen"-Symbol in der Symbolleiste des IDE laufen lassem. Dies ist sehr einfach und schnell - vor allem für temporäre Makros, die ein paar Mal verwendet und dann verworfen werden.

Bekannte Probleme mit dem Makrorekorder

Kü (neu!) k-j Erhardt Jochen

Die Makroaufzeichnung ist leider relativ fehleranfällig. Hauptgrund ist der Dispatch framework bzw. seine Beziehung zum Makrorekorder.

Dispatch Framework: was ist das?

Kü (neu!) k-j Erhardt Jochen

Der Zweck des Dispatch Frameworks ist es, einen einheitlichen Zugang zu den LibreOffice-Komponenten für Befehle zu schaffen, die in der Regel den Menüpunkten entsprechen. Man kann Datei ▸ Speichern aus dem Menü, die Tastenkombination Strg+S oder das Speichern-Symbol in der Werkzeugleiste verwenden, um ein Dokument zu speichern. Alle diese Befehle sind im gleichen "Dispatchbefehl" übersetzt.

Der Dispatch Framework kann auch verwendet werden, um "Befehle" zurück an das UI (User Interface) zu geben. Zum Beispiel wird nach dem Speichern des Dokuments der "Datei speichern"-Befehl deaktiviert. Sobald das Dokument geändert wurde, wird der Befehl Speichern wieder aktiviert.

Beispiele für einen Dispatchbefehl sind .uno:InsertObject oder .uno:GoToStartOfLine. Der Befehl wird an den Rahmen des Dokuments gesendet und der Rahmen übergeht diesen Befehl, bis ein Objekt gefunden wird, das den Befehl behandeln kann.

Wie der Makrorekorder den Dispatch Framework verwendet

Kü (neu!) k-j Erhardt Jochen

Der Makrorekorder zeichnet die generierten Meldungen auf. Der Rekorder ist relativ einfach zu implementieren und die gleichen Befehle, die ausgegeben werden, werden für eine spätere Verwendung aufgezeichnet. Das Problem ist, dass nicht alle übertragenen Befehle vollständig sind. Zum Beispiel erzeugt das Einfügen eines Objektes folgenden Code:

dispatcher.executeDispatch(document, ".uno:InsertObject", "", 0, Array())

Es ist nicht möglich, festzulegen, welche Objekt-Art zu erstellen oder einzufügen ist. Wenn ein Objekt aus einer Datei eingefügt werden soll, kann nicht festgelegt werden, welche Datei benutzt werden soll.

Wenn Sie versuchen, ein Makro aufzunehmen und dabei mit Extras ▸ Optionen die Optionen zu öffnen und Konfikurationseinstellungen zu ändern, nimmt das erstellte Makro keine Konfigurationsänderungen auf. Der generierte Code ist auskommentiert, so dass das Makro auch nicht korrekt ablaufen kann.

rem dispatcher.executeDispatch(document,
    ".uno:OptionsTreeDialog", "", 0, Array())

Wenn ein Dialog geöffnet ist, wird der Befehl, der den Dialog öffnet, wahrscheinlich auch erzeugt werden. Alle Einstellungen innerhalb des Dialogs werden gewöhnlich nicht aufgezeichnet. Beispiele hierfür sind der Makroorganisationsdialog, der Dialog "Einfügen von Sonderzeichen" und ähnliche Dialogarten. Andere mögliche Probleme mit dem Makrorekorder können das Einfügen einer Formel, die Einrichtung von Anwenderdaten, das Setzen von Calc-Filtern, Aktionen in Datenbankformularen und Exportieren eines Dokumentes in ein verschlüsseltes PDF sein. Sie werden erst mit dem Ausprobieren herausfinden können, was funktioniert. Die Aktionen aus dem Suchdialog werden zum Beispiel richtig erfasst.

Weitere Möglichkeiten

Kü (neu!) k-j Jochen Erhardt

Wenn der Makro-Rekorder nicht in der Lage ist, ein bestimmtes Problem zu lösen, ist die übliche Lösung, den Code durch Nutzung der LibreOffice-Objekte zu schreiben. Leider ist die Programmierung für Objekte am Anfang nicht einfach. Es ist normalerweise am besten, mit einfachen Beispielen zu beginnen und diese dann langsam entsprechend Ihren Erfahrungen verästeln zu lassen. Bereits generierte Makros zu lesen und nachzuvollziehen ist ein guter Einstieg.

Makroorganisation

Kü (neu!) k-j Erhardt Jochen

In LibreOffice werden Makros in Module, die Module in Bibliotheken und Bibliotheken in Container gruppiert. Eine Bibliothek wird gewöhnlich als Übergruppierung entweder für eine Sammlung von Makros oder für eine ganze Anwendung verwendet. Module werden gewöhnlich in Funktionen wie zum Beispiel Benutzereingaben und Berechnungen unterteilt. Individuelle Makros sind Subroutinen und Funktionen.

Ein Informatiker würde die Abbildung XYZ verwenden, um die Situation genau zu beschreiben. Der Text "1..*" meint eins oder mehr und "0..*" meint Null oder mehr. Das schwarze Dreieck meint bestehend aus oder enthält.

  • Ein Container enthält ein oder mehrere Bibliotheken und jede Bibliothek ist in einem Container enthalten.
  • Eine Bibliothek enthält keine oder mehrere Module und jedes Modul ist in einem Bibliothek enthalten.
  • Ein Modul enthält keine oder mehrere Makros und jedes Makro ist in einem Modul enthalten.

Verwenden Sie Extras → Makros → Makros verwalten → LibreOffice Basic, um den LibreOffice Basic Makros-Dialog zu öffnen (siehe Abbildung xyz). Es werden alle verfügbaren Bibliothekscontainer in der „Makro aus“-Liste angezeigt. Jedes Dokument ist ein Bibliothekscontainer, der in der Lage ist, mehrere Bibliotheken aufzunehmen. Die Anwendung selbst fungiert als zwei Bibliothekscontainer: ein Bibliothekscontainer für Makros, die mit LibreOffice geliefert werden ("LibreOffice Makros") und ein Bibliothekscontainerfür die persönlichen Makros (" Meine Makros"). Wie in Abbildung xyz gezeigt, sind nur zwei Dokumente geöffnet. Die LibreOffice-Makros sind mit dem Runtime-Code der Anwendung gespeichert, die normalerweise nicht bearbeitet werden können, solange Sie nicht als Administrator angemeldet sind. Dies ist auch gut so, da diese Makros nicht geändert werden sollen, und Sie sollten Ihre eigenen Makros nicht im LibreOffice-Container speichern.

Solange Sie Ihre Makros für ein einzelnes Dokument, und nur in einem einzigen Dokument, benutzbar machen, werden Ihre Makros am sinnvollsten im Meine Makros-Container gelagert. Der "Meine Makros-Container" ist in Ihrem Benutzerbereich oder Home-Verzeichnis gespeichert.

Wenn ein Makro in einem Dokument enthalten ist, wird ein aufgezeichnetes Makro versuchen, in diesem Dokument zu arbeiten - vor allem wenn es "ThisComponent" für seine Aktionen benutzt.

Jeder Bibliothekscontainer enthält eine Bibliothek namens Standard. Es ist besser, eigene Bibliotheken mit aussagekräftigeren Namen als die Standard-Bibliothek zu verwenden. Diese Namen sind nicht nur einfacher zu verwalten, sondern Sie können diese auch in andere Bibliothekscontainer importieren, während die Standard-Bibliothek nicht importiert werden kann.

Achtung
LibreOffice erlaubt es Ihnen, Bibliotheken in einem Bibliothekscontainer zu importieren. Aber es ist nicht mögliche, dass Sie die Bibliothek namens Standard überschreiben. Wenn Sie Ihre Makros in der Standard-Bibliothek speichern, können diese nicht in einen anderen Bibliothekscontainer importiert werden.

Genauso ist es ratsam, aussagekräftige Namen für Ihre Module zu verwenden. Standardmäßig verwendet LibreOffice Namen wie Module1. Fühlen Sie sich frei, Ihre eigenen aussagekräftigen Namen zu verwenden.

Wenn Sie Makros erstellen, müssen Sie auch entscheiden, wo diese abgespeichert werden sollen. Das Abspeichern eines Makros in einem Dokument ist dann nützlich, wenn das Dokument weiter gegeben wird und Sie wollen, dass das Makro im Dokument enthalten ist. Makros, die im Anwendungsbibliothekscontainer namens "Meine Makros" gespeichert sind, sind dagegen global für alle Dokumente verfügbar.

Makros sind erst dann verfügbar, wenn die Bibliothek, die sie enthält, geladen ist. Die Standard-Bibliothek und Template-Bibliothek werden jedoch automatisch geladen. Eine geladene Bibliothek wird anders als eine Bibliothek, die nicht geladen ist, angezeigt. Um die Bibliothek und die enthaltenen Module zu laden, klicken Sie doppelt auf die Bibliothek.

Wo werden Makros gespeichert?

Kü (neu!) k-j Erhardt Jochen

LibreOffice speichert benutzerspezifische Daten in ein Verzeichnis unter dem Benutzerverzeichnis. Die Lage des Benutzerverzeichnis ist abhängig von dem verwendeten Betriebssystem. Verwenden Sie Extras → Optionen → LibreOffice → Pfade, um zu sehen, wo andere Konfigurationsdaten gespeichert werden. User-Makros sind in LibreOffice\3\user\basic gespeichert. Jede Bibliothek ist in einem eigenen Verzeichnis unterhalb des Basisverzeichnisses gespeichert.

Es ist für den gelegentlichen Gebrauch nicht wichtig zu verstehen, wo Makros gespeichert werden. Wenn Sie aber wissen, wo sie gespeichert sind, können Sie eine Sicherungskopie erstellen, Ihre Makros weitergeben oder überprüfen, ob ein Fehler vorhanden ist. Gerade wenn ein Makro einen Fehler enthält, können Sie das Makro jemandem schicken, der Ihnen eventuell bei der Fehlersuche helfen kann.

Verwenden Sie Extras → Makros → Dialoge verwalten, um den LibreOffice Makro-Verwaltungsdialog zu öffnen. Eine weitere gängige Methode, um diesen Dialog zu öffnen, ist über Extras → Makros → Makros verwalten → LibreOffice Basic das LibreOffice Dialogfeld Makros zu öffnen und dann auf die Verwalten-Taste zu klicken.

Makros importieren

Kü (neu!) k-j Erhardt Jochen

Der "Makro verwalten"-Dialog bietet Funktionen zum Erstellen, Löschen und Umbenennen von Bibliotheken, Modulen und Dialogen. Wählen Sie den Bibliothek-Container und klicken Sie dann auf die Schaltfläche Importieren, um Makro-Bibliotheken zu importieren (siehe Abbildung xyz).

Hinweis
Eine Bibliothek „Standard“ kann nicht importiert werden.
Tipp
Unter Linux werden die LibreOffice-spezifischen Dateien unter dem Benutzer-Homeverzeichnis in einem Unterverzeichnis gespeichert, dessen Name mit einem Punkt beginnt. Verzeichnisse und Dateien, die mit einem Namen mit einem Punkt beginnen, werden in einem normalen Auswahldialog nicht angezeigt. Um das Verzeichnis zu öffnen, gehen Sie entweder zum Home-Verzeichnis und geben den Namen .LibreOffice\3 ein und klicken dann auf Öffnen oder Sie drücken Strg-H, um versteckte Dateien und Ordner anzuzeigen und navigieren wie gewohnt. Es öffnet sich das Verzeichnis, das nicht von Anfang an gezeigt wurde.

Gehen Sie zu dem Verzeichnis, das die Bibliothek enthält, die Sie importieren möchten. Normalerweise gibt es zwei Dateien zur Auswahl: dialog.xlb und script.xlb. Es spielt keine Rolle, welche der beiden Dateien Sie wählen, da beide Dateien importiert werden. Wählen Sie eine Datei und klicken Sie auf Öffnen, um fortzufahren.

Wenn die Bibliothek bereits vorhanden ist, wird sie nicht ersetzt, es sei denn „Existierende Bibliotheken ersetzen“ ist markiert. Wenn „Als Referenz einfügen (nur lesen)“ aktiviert ist, wird die Bibliothek an ihrem aktuellen Speicherort referenziert, aber Sie können diese nicht bearbeiten. Wenn „Als Referenz einfügen (nur lesen)“ nicht aktiviert ist, wird die Bibliothek in das Makroverzeichnis des Benutzers kopiert.

Makros können in Bibliotheken innerhalb von LibreOffice-Dokumenten gespeichert werden. Wählen Sie ein Dokument anstelle eines Verzeichnis auf der Festplatte (wie in Abbildung xyz gezeigt), um die in einem Dokument enthaltenen Bibliothek zu importieren.

Makros für den Import herunterladen

Kü (neu!) k-j Jochen Erhardt

Makros stehen auch zum Herunterladen zur Verfügung. Einige Makros werden in Dokumenten, manche als reguläre Dateien, die Sie auswählen und importieren müssen, und einige als Makrotext bereit gestellt, der in die Basic IDE kopiert und eingefügt werden soll. Verwenden Sie Extras → Makros → Makros verwalten → LibreOffice Basic, um den LibreOffice Makrodialog zu öffnen. Wählen Sie das Makro, um es zu bearbeiten, und klicken Sie dann auf Bearbeiten, um das Makro in der Basic IDE zu öffnen.

Einige Makros sind als kostenlose Downloads im Internet (siehe Abbildung xyz). "Ein vorhandenes Makros hinzufügen" auf Seite XYZ beschreibt, wie Sie diese Makros Ihrer Makrobibliothek hinzuzufügen.

http://www.ooomacros.org/ (archived at the Wayback Machine⁠Wikipedia logo v3.svg)

Sammlung von Makros aus dem OOo-Projekt.

http://www.pitonyak.org/oo.php

Referenzmaterialien über Makros.

http://development.openoffice.org/

Viele Links zu allem.

http://www.oooforum.org/

Ein Forum, mit vielen Beispielen und Hilfe.

http://user.services.openoffice.org/

Ein weiteres Forum, mit vielen Beispielen und Hilfe.

Wie man ein Makro ausführt

Kü (neu!) k-j Erhardt Jochen

Eine typische Methode, um ein Makro auszuführen, ist im Folgenden beschrieben:

  1. Verwenden Sie Extras → Makros → Makro ausführen, um den Makro Selektor-Dialog (siehe Abbildung xyz) zu öffnen.
  2. Wählen Sie die Bibliothek und das Modul in der Bibliothek-Liste (linke Seite).
  3. Wählen Sie das Makro in der Liste Name des Makros (rechte Seite).
  4. Klicken Sie auf Ausführen, um das Makro auszuführen.

Obwohl Sie Extras → Makros → Makro ausführen jedes Mal benutzen können, um Makros auszuführen, ist dies keine effiziente Vorgehensweise für häufig genutzte Makros. Sinnvoller ist es hierfür, ein Makro einer Symbolleiste, einem Menüpunkt, einem Tastaturkürzel oder einer Schaltfläche, die in einem Dokument eingebettet ist, zuzuweisen. Bei der Auswahl einer Methode ist es auch gut, sich folgende Fragen zu stellen:

  • Soll das Makro nur in einem Dokument zur Verfügung stehen oder global für alle Dokumente?
  • Bezieht sich das Makro auf einen bestimmten Dokumenttyp, wie z. B. ein Calc-Dokument?
  • Wie häufig wird das Makro verwendet werden?

Die Antworten werden bestimmen, wo das Makro gespeichert und wie es zugänglich gemacht wird. Sie werden zum Beispiel ein selten verwendetes Makro wahrscheinlich nicht in einer Symbolleiste einfügen. Um Sie bei Ihrer Wahl zu unterstützen haben wir folgende Tabelle XYZ erstellt:


Tabelle XYZ: Methoden um ein Makro zu starten

Typ LibreOffice Dokumenttyp Dokument
Werkzeugleiste Nein Ja Ja
Menü Nein Ja Ja
Kurztaste Ja Ja Nein
Ereignis Ja Nein Ja

Um einen Menüpunkt, Tastenkombination oder ein Symbol in der Symbolleiste für den Makroaufruf einzufügen, verwenden Sie das Dialogfenster Anpassen (siehe Abbildung xyz). Öffnen Sie diesen Dialog mit einer der folgenden Arten:

  • Wählen Sie Extras → Anpassen aus der Menüleiste.
  • Jede Symbolleiste hat ein Symbol (auf der Spitze stehendes Dreieck), das ein Menü öffnet. Wählen Sie Symbolleiste anpassen.

Der Dialog Anpassen enthält die Register Menüs, Tastatur, Symbolleisten und Ereignisse. Weitere Erklärungen bezüglich des Dialogs finden Sie im Kapitel 14 Anpassen von LibreOffice.

Werzeugleiste

Kü (neu!) Ralf Erhardt k-j

Makros können den Werkzeugleisten hinzugefügt werden. Einzelheiten hierzu siehe Kapitel 14, Anpassen von LibreOffice.

Menüeintrag

Kü (neu!) Ralf Erhardt k-j

Über Extras -> Anpassen wird der Dialog 'Anpassen' geöffnet, dort wählen Sie den Reiter 'Menü'. Sie können dann einen vorhandenen Menüeintrag bearbeiten oder neue Menüeinträge zum Aufruf von Makros erstellen. Weitere Informationen zur Menüanpassung siehe Kapitel 14, Anpassen von LibreOffice.

Tastaturkürzel

Kü (neu!) Ralf Erhardt k-j

Über Extras ->Anpassen wird der Dialog 'Anpassen' geöffnet, dort wählen Sie den Reiter 'Tastatur'. Einzelheiten zur Zuweisung von Tastaturkürzeln siehe Kapitel 14, Anpassen von LibreOffice.

Ereignis

Kü (neu!) k-j Erhardt Jochen

Wenn in LibreOffice etwas passiert, spricht man von einem Ereignis oder englisch Event. Ereignisse treten zum Beispiel auf, wenn ein Dokument geöffnet, eine Taste gedrückt oder die Maus bewegt wird. LibreOffice ermöglicht es, Ereignissen ein Makro zuzuordnen, wenn das Ereignis eintritt. Das Makro wird dann Event-Handler genannt. Die vollständige Beschreibung von Event-Handlar geht weit über den Rahmen dieses Handbuches hinaus. Hier soll nur ein kleiner Einblick gegeben werden.

Achtung
Seien Sie vorsichtig, wenn Sie einen Event-Handler konfigurieren. Wenn Sie einmal angenommen einen Event-Handler für jeden Tastendruck konfigurieren und dabei einen Fehler machen, so dass das Ereignis nicht richtig gehandhabt wird, kann es sein, dass das Programm bei jedem Tastendruck nicht mehr reagiert und Sie LibreOffice beenden müssen.

Verwenden Sie Extras -> Anpassen, um den Dialog zu öffnen und wählen Sie die Registerkarte Ereignisse (siehe Abbildung XYZ). Die Ereignisse im Dialog Anpassen beziehen sich auf die gesamte Anwendung und bestimmte Dokumente. Verwenden Sie das Feld 'Speichern in', um LibreOffice oder ein bestimmtes Dokument zu wählen.

Viele Anwender weisen zum Beispiel dem "Dokument öffnen"-Ereignis das Starten eines bestimmten Makros zu. Das Makro führt dann bestimmte Setup-Aufgaben für das Dokument durch. Wählen Sie das gewünschte Ereignis und klicken Sie auf die Makrotaste, um den Makro-Auswahldialog zu öffnen.

Abbildung XYZ

Wählen Sie das gewünschte Makro und klicken Sie auf OK, um das Makro dem Ereignis zuzuordnen. Die Registerkarte Ereignisse zeigt, dass ein Makro einem Ereignis zugeordnet wurde (siehe Abbildung XYZ). Wenn in dem aufgeführten Beispiel ein Dokument geöffnet wird, wird das PrintHello-Makro ausgeführt.

Viele Objekte in einem Dokument können dazu verwendet werden, ein Makro aufzurufen, wenn ein bestimmtes Ereignis eintritt. Die häufigste Verwendung ist ein Steuerelement einzufügen, z. B. eine Schaltfläche in einem Dokument. Bei einem Doppelklick auf eine Grafik öffnet sich ein Dialog mit einer Registerkarte Makro, so dass Sie einem Ereignis ein Makro zuweisen können.

Extensions

Kü (neu!) k-j Erhardt Jochen

Eine Erweiterung ist ein Paket, das in LibreOffice installiert werden kann, um neue Funktionen hinzuzufügen. Erweiterungen können in fast jeder Programmiersprache geschrieben werden und können einfach oder anspruchsvoll sein. Erweiterungen können in folgende Gruppen unterteilt werden:

  • Neue Komponenten und Funktionen, die normalerweise auch ein gewisses Maß an Userinterface-Integration wie neue Menüs oder Symbolleisten bieten
  • Calc Add-Ins, die neue Funktionalitäten für Calc bieten, einschließlich neuer Funktionen, die wie normale eingebaute Funktionen zur Verfügung stehen.
  • Daten-Piloten, die direkt in Calc verwendet werden
  • Diagramm-Add-Ins mit neuen Diagrammtypen
  • Linguistische Komponenten wie Rechtschreib-, Stil- und Grammatikprüfung
  • Dokumentvorlagen und Bilder

Weitere Informationen , wie Sie Erweiterungen erhalten und installieren, finden Sie in Kapitel 14, Anpassen von LibreOffice.

Makros schreiben ohne Recorder

Kü (neu!) k-j Ralf Erhardt

Die Beispiele, die in diesem Kapitel gezeigt werden, wurden mit dem Makrorekorder oder dem Dispatcher erstellt. Sie können auch Makros schreiben, die direkt auf die Objekte zugreifen, die in LibreOffice enthalten sind. Mit anderen Worten, Sie können ein Dokument direkt beeinflussen.

Die internen Objekte von LibreOffice direkt zu beeinflussen ist ein Thema für Fortgeschrittene, das über den Rahmen dieses Kapitels hinausgeht. Ein einfaches Beispiel zeigt allerdings, wie dies grundsätzlich funktioniert:

Listing 7: Hängt den Text "Hallo" an das Ende des Dokuments

Sub HalloalsAnhang
:Dim oDoc
:Dim sTextService$
:Dim oCurs
REM Diese Komponente betrifft das aktuelle Dokument. :oDoc = ThisComponent REM Überprüfen, ob dies ein Textdokument ist :sTextService = "com.sun.star.text.TextDocument" :If NOT oDoc.supportsService(sTextService) Then :MsgBox "Dieses Makro arbeitet nur mit einem Textdokument" :Exit Sub :End If
REM Abfrage des Zeigers von der aktuellen Steuerung. :oCurs = oDoc.currentController.getViewCursor ()
REM Bewege den Mauszeiger zum Ende des Dokuments. :oCurs.gotoEnd (False)
REM Fügt den Text "Hallo" am Ende des Dokuments ein :oCurs.Text.insertString(oCurs, "Hallo", False) End Sub

Weitere Informationen

Kü (neu!) k-j Erhardt Jochen

Es stehen zahlreiche Quellen zur Verfügung, die Hilfe bei der Erstellung von Makros bieten. Verwenden Sie zuerst Hilfe → LibreOffice Hilfe, um die LibreOffice-Hilfeseiten zu öffnen. Die linke obere Ecke des LibreOffice Hilfesystem enthält eine Auswahlliste. Um die Hilfe für Basic zu erhalten, wählen Sie LibreOffice Basic aus dieser Liste. Dieser Hinweis gilt nur, wenn Sie den Helppack für LibreOffice installiert haben, so dass die Hilfe auch offline zur Verfügung steht.

In LibreOffice enthaltene Makros

Kü (neu!) k-j Erhardt Jochen

Viele gute Makros sind schon in LibreOffice enthalten. Verwenden Sie Extras → Makros → Makros verwalten → LibreOffice Basic, um den Makro-Dialog zu öffnen. Erweitern Sie die Bibliothek LibreOfficeMakros. Sehen Sie sich zum Beispiel unter Tools die Debug-Module an. Einige gute Beispiele sind WritedbgInfo (Dokument) und printdbgInfo (Datenblatt). Versuchen Sie, diese Schritt für Schritt nachzuvollziehen.

Onlinequellen

Kü (neu!) k-j Jochen Erhardt

Die folgenden Links und Referenzen beinhalten Informationen betreffs Makroprogrammierung:

http://api.libreoffice.org/docs/common/ref/com/sun/star/module-ix.html (Offizielle IDL Referenz, hier finden Sie fast alle Befehle mit einer Beschreibung)

http://api.openoffice.org/docs/common/ref/com/sun/star/module-ix.html (Offizielle IDL Referenz von OOo, hier finden Sie fast alle Befehle mit einer Beschreibung)


http://download.oracle.com/docs/cd/E19535-01/819-0439/ (Das Handbuch von SUN/Oracle zur Programmierung mit Basic für StarOffice 8, sehr gut geschrieben und dargestellt und Grundlage einiger OOo-Programmierhandbücher.)

http://www.pitonyak.org/oo.php (Andrew Pitonyaks Makroseite)

Hinweis
Aufgrund der Entwicklung bei Openoffice.org können wir nicht garantieren, dass die darauf bezogenen Links auch in Zukunft in dieser Form zur Verfügung stehen.