StarBasic

Aus LinuxUser 05/2003

StarBasic

Programmieren mit Basic

OpenOffice enthält ein Basic-Modul, das mit Visual Basic for Applications in Microsoft Office vergleichbar ist. Wie Sie damit arbeiten, erfahren Sie in diesem Beitrag.

Sehr zum Leidwesen mancher Benutzer gibt es in OpenOffice bis jetzt noch keine Möglichkeit, Makros aufzuzeichnen. Rudimentär ist dieses Feature in einer Entwicklerversion enthalten, derzeit müssen Sie Makros aber von Hand in Basic programmieren.

Da gibt es gleich mehrere Probleme: Nicht nur, dass das Programmieren in OpenOffice gar nicht so einfach ist und man einige Fehler machen kann – diese Fehler kann man zudem oft nicht nachvollziehen, da es bisher keine vernünftige Dokumentation gibt. So steht man häufig wie der Ochs vorm Berg, wenn man etwa Methoden oder Eigenschaften von Objekten sucht: Die sind leider nicht in der Hilfefunktion vorhanden.

Trotzdem kann man mit etwas Sachverstand ohne Weiteres existierende Basic-Makros übernehmen und anpassen; vor allem, wenn man Erfahrung mit StarBasic aus der Version 5.2 von StarOffice oder mit Visual Basic for Applications aus Microsoft Office hat. Wie Sie ein Makro in OpenOffice übernehmen und integrieren können, wird hier anhand eines Zählmakros beschrieben.

Makro-Verwaltung

Gesteuert wird zunächst alles über das Dialogfenster Makro. Dort steht links direkt unter Makroname das aktuell in dem Listenfeld darunter markierte Makro. Sie können hier im Textfeld aber auch den Namen eines neuen Makros eingeben.

Rechts unter Makro aus sind alle Bibliotheken und Module gelistet. In geöffneten Dateien ist das meist nur die Standard-Bibliothek, unter soffice hingegen finden Sie Module in den Bibliotheken Euro, FormWizard, Gimmicks, ImportWizard, Schedule, Standard, Template, Tools und WebWizard. Hier wählen Sie das Modul aus, in das Sie ein neues Makro aufnehmen möchten. Wollen Sie ein Makro in eine bestimmte Datei integrieren, muss diese zuvor geöffnet sein.

Über die Schaltflächen im rechten Bereich des Fensters können Sie das gewählte Makro ausführen, bearbeiten oder löschen. Haben Sie links einen neuen Namen eingegeben, erscheint an Stelle von Löschen die Schaltfläche Neu; ein Klick darauf öffnet die Basic-Entwicklungsumgebung zum Programmieren. Wählen Sie hingegen die Schaltfläche Zuordnen, wird der Dialog Anpassen geöffnet, und Sie können das Makro einem Menü, Tastenbefehl oder Ereignis zuordnen.

Abbildung 1: Die Zentrale: Der Dialog "Makro" ist die Leitstelle der OpenOffice-Makros. Von hier starten, löschen oder bearbeiten Sie die Basic-Programme

Abbildung 1: Die Zentrale: Der Dialog “Makro” ist die Leitstelle der OpenOffice-Makros. Von hier starten, löschen oder bearbeiten Sie die Basic-Programme

Makros verwalten

Wählen Sie Verwalten, können Sie im folgenden Dialog die Module, Dialoge und Basic-Bibliotheken verwalten. Im Register Module fügen Sie neue Module oder Dialoge hinzu.

In der Liste Modul/Dialog stehen alle Module und Dialoge (grünes Symbol) von OpenOffice und den geöffneten Dokumenten. Wählen Sie ein Element zum Bearbeiten aus, oder markieren Sie die Standard-Bibliothek, um dort ein neues Modul oder einen Dialog hinzuzufügen; per Drag & Drop können Sie die Elemente zwischen den Standard-Bibliotheken auch verschieben und kopieren. Markieren Sie ein Element einer Standard-Bibliothek, können Sie dieses auch löschen.

Über das Register Bibliotheken verwalten Sie die Bibliotheken. Aus der Liste Applikation/Dokument wählen Sie entweder die Anwendung soffice oder eines der geöffneten Dokumente. Dort können Sie neue hinzufügen und alle bis auf die Standard-Bibliothek löschen.

Abbildung 2: Die Verwaltung: Im Dialog <code srcset=

Makros verwalten kopieren und verschieben Sie Makros und löschen oder fügen neue Bibliotheken hinzu” width=”300″ height=”235″ /> Abbildung 2: Die Verwaltung: Im Dialog Makros verwalten kopieren und verschieben Sie Makros und löschen oder fügen neue Bibliotheken hinzu

Makro hinzufügen

Ein erstes Programm, das Sie in OpenOffice integrieren können, ist wordcount.bas. Es zählt die Wörter eines Textes. Sie finden das Programm auf unserer Web-Seite. (http://wordcount.bas)

Öffnen Sie Writer und wählen Extras/Makro. Markieren Sie die Bibliothek Standard der Anwendung soffice und geben links in das Textfeld unter Makroname den Namen “wordcount” ein. Klicken Sie auf Neu, um ein Makro dieses Namens zu erzeugen.

Abbildung 3: Erstes Makro: Wählen Sie rechts die <code srcset=

Standard-Bibliothek, tragen links oben ins Textfeld den Namen des Makros ein und wählen die Schaltfläche Neu” width=”300″ height=”186″ /> Abbildung 3: Erstes Makro: Wählen Sie rechts die Standard-Bibliothek, tragen links oben ins Textfeld den Namen des Makros ein und wählen die Schaltfläche Neu

Sofort in Anschluss wird die Basic-Entwicklungsumgebung mit folgendem Inhalt geöffnet:

REM  @L: *@L: *@L: *@L: *@L: *  BASIC  @L: *@L: *@L: *@L: *@L: *
Sub Main
End Sub
Sub wordcount
End Sub

Die Markierung steht vor der Zeile Sub wordcount. Hier beginnt das Makro und in der Zeile End Sub endet es. Jetzt bewegen Sie den Cursor eine Zeile tiefer, so dass die Markierung zwischen der Sub– und der End Sub-Zeile steht. Nun müssen Sie die Datei wordcount.bas aus dem CD-Verzeichnis einlesen. Dazu wählen Sie in der Macroleiste die zweitletzte Schaltfläche Quelltext einfügen, suchen im folgenden Dialog die Datei und öffnen Sie mit Öffnen.

Abbildung 4: Nach dem Einfügen: So sieht der Programmcode des Basic-Moduls aus, nachdem Sie die Zeilen aus <code srcset=

Wordcount.bas eingefügt haben” width=”300″ height=”228″ /> Abbildung 4: Nach dem Einfügen: So sieht der Programmcode des Basic-Moduls aus, nachdem Sie die Zeilen aus Wordcount.bas eingefügt haben

Die Zeile Sub dvwc können Sie löschen, ebenso eine der End Sub-Zeilen. Denn durch Sub wordcount und ein End Sub ist das Makros schon definiert.

Makro ausführen

Das war es eigentlich schon. Sie können nun das Basic-Programm speichern und innerhalb eines Textes ausprobieren. Markieren Sie einen bestimmten Text und wählen Sie Extras/Makro. Dort markieren das Makro wordcount und klicken auf Ausführen. Es erscheint ein Fenster, das über die Gesamtzahl der Wörter im Text informiert und darüber, wie viele Wörter markiert sind und wie viele Zeichen das sind.

Abbildung 5: Erstes Ergebnis: Nach dem Speichern und Ausführen des Makros macht es das, was es soll - es zählt die Wörter des gesamten Textes und die Wörter und Zeichen der Auswahl

Abbildung 5: Erstes Ergebnis: Nach dem Speichern und Ausführen des Makros macht es das, was es soll – es zählt die Wörter des gesamten Textes und die Wörter und Zeichen der Auswahl

Das ist nicht das gewünschte Ergebnis. Denn der Text soll zumindest auf deutsch erscheinen. Und es wäre schön, wenn auch die Gesamtzahl der Zeichen des Textes angegeben würden, nicht nur die ausgewählten. Kein Problem, der Code wird dazu einfach geändert. Dazu markieren Sie unter Extras/Makro das gerade ausgeführte Makro und Bearbeiten es erneut. Im Basic-Programmfenster wechseln Sie ganz zum Ende des Codes.

Dort stehen zwei Zeilen, die fast gleich beginnen, nämlich mit msgbox. Die obere der beiden Zeilen ist auskommentiert, aber fast schon die gewünschte Variante. Löschen Sie deshalb das Hochkomma vor dieser Zeile und setzen eines vor die zweite.

Nun ändern Sie die Zeile wie folgt:

msgbox "Dokument" + chr(13) + "  Zeichen: " + nAllChars + chr(13) + "  Wörter:    " + nAllWords + chr(13) + chr(13) + "Markiert" + chr(13) + "  Zeichen: " + nSelChars + chr(13) + "  Wörter:    " + nSelWords, 64, "Wörter und Zeichen zählen"

Damit sind sowohl die Ausgaben als auch die Titelleiste der Dialogbox in deutsch. Jetzt testen Sie das Makro erneut. Wenn die Zahlen nicht untereinander stehen, fügen Sie hinter Wörter: und Zeichen: entsprechend Leerzeichen ein.

Abbildung 6: Angaben auf deutsch: Nach dem Ändern der <code srcset=

msgbox-Zeile sind die Ausgaben des Dialogs wie gewünscht” width=”227″ height=”226″ /> Abbildung 6: Angaben auf deutsch: Nach dem Ändern der msgbox-Zeile sind die Ausgaben des Dialogs wie gewünscht

Damit ist schon alles erledigt. Außer, Sie wollen dem Programm noch einige weitere Wort-Trenner beibringen. Bisher sind hier Leerzeichen, öffnende und schließende runde Klammern sowie der Tabulator definiert:

'Add your own separators here
      'chr(9) is a tab
      Case " ", "(", ")", chr(9)

Soll das etwa auch für geschweifte und eckige Klammern gelten, dann hängen Sie diese einfach – mit Komma getrennt und in Anführungszeichen – an die Case-Anweisung an:

Case " ", "(", ")", chr(9), "[", "]", "{", "}"

Wenn Sie damit fertig sind, schließen Sie das Basic-Programmfenster wieder.

Abbildung 7: Kleine Änderung: Wenn Sie weitere Wort-Trenner ins Programm einfügen möchten, schreiben Sie sie ans Ende der unteren <code srcset=

Case-Anweisung” width=”300″ height=”223″ /> Abbildung 7: Kleine Änderung: Wenn Sie weitere Wort-Trenner ins Programm einfügen möchten, schreiben Sie sie ans Ende der unteren Case-Anweisung

Makro zuordnen

Das Makro funktioniert. Es ist nur etwas umständlich, es zu starten. Schneller geht es, wenn Sie es einem Tastenbefehl zuordnen oder ins Menü oder eine Symbolleiste integrieren.

Dazu wählen Sie in Writer zunächst Extras/Makro und klicken dann auf die Schaltfläche Zuordnen. Jetzt haben Sie die Wahl. Wollen Sie es ins Menü aufnehmen, geht das wie folgt:

  • Wechseln Sie ins Register Menü und klicken unter Bereich auf das Pluszeichen vor dem Eintrag OpenOffice.org BASIC-Makros.
  • Dort klicken Sie zuerst auf das Pluszeichen vor Standard und dann auf das Modul mit der Zähl-Makro.
  • Nun markieren Sie in der Liste Funktion nebenan das Makro wordcount.
  • Markieren Sie oben in der Liste Menüeinträge die Stelle, nach der Sie das Makro einfügen möchten.
  • Klicken Sie auf Neu und der Makroname wird hinter dem markierten Menüeintrag eingetragen. Mit den Pfeiltasten können Sie die Position noch ändern.
  • Mit OK ist die Zuordnung erledigt und das Makro an der gewünschten Stelle im Menü zu finden.
Abbildung 9: Start übers Menü: Wenn Sie das Makro in das <code srcset=

Extra-Menü von Writer aufnehmen, können Sie es dort schnell abrufen” width=”300″ height=”259″ /> Abbildung 9: Start übers Menü: Wenn Sie das Makro in das Extra-Menü von Writer aufnehmen, können Sie es dort schnell abrufen

Einem Tastenbefehl ordnen Sie das Makro so zu:

  • Im Register Tastatur klicken Sie unter Bereich auf das Pluszeichen vor dem Eintrag OpenOffice.org BASIC-Makros.
  • Dort klicken Sie zuerst auf das Pluszeichen vor Standard und dann auf das Modul mit der Zähl-Makro.
  • Nun markieren Sie in der Liste Funktion nebenan das Makro wordcount.
  • Suchen Sie oben aus den Tastenkombinationen die heraus, die Sie mit dem Makro verbinden wollen und markieren diese.
  • Klicken Sie auf Ändern und der Tastenbefehl erscheint unten in der Liste Tasten.
  • Mit OK ist die Zuordnung erledigt und Sie können Sie gleich ausprobieren.
Abbildung 8: Makro ausführen per Tastenbefehl: Wenn Sie das <code srcset=

wordcount-Makro so zugeordnet haben, können Sie es jederzeit mit Strg-Umsch-w starten” width=”300″ height=”259″ /> Abbildung 8: Makro ausführen per Tastenbefehl: Wenn Sie das wordcount-Makro so zugeordnet haben, können Sie es jederzeit mit Strg-Umsch-w starten

Als drittes können Sie das wordcount-Makro auch in eine Symbolleiste einbauen, etwa in die Funktionsleiste:

  • Dazu markieren Sie im Register Symbolleisten die Funktionsleiste und wählen dann die Schaltfläche Bearbeiten.
  • Im folgenden Dialog klicken Sie – wie schon in den vorigen Beispielen – unter Bereich auf das Pluszeichen vor dem Eintrag OpenOffice.org BASIC-Makros.
  • Klicken Sie auf das Pluszeichen vor Standard und dann auf das Modul mit der Zähl-Makro.
  • Jetzt sind oben die Makros des Moduls als Schaltflächen zu sehen. Ziehen Sie nun das Makro wordcount per Drag & Drop an die gewünschte Stelle in der Funktionsleiste. Dort können Sie es per Drag & Drop verschieben oder auch wieder entfernen.
  • Über Symbol können Sie dem Makro noch ein Bild zuordnen.
  • Klicken Sie auf Schließen und das Makro steht nun als Textschaltfläche in der Funktionsleiste. (hge)
Abbildung 10: Makro in der Symbolleiste: Per Drag & Drop können Sie das <code srcset=

wordcount-Makro in der Funktionsleiste platzieren und dort jederzeit mit einem Klick starten” width=”300″ height=”285″ /> Abbildung 10: Makro in der Symbolleiste: Per Drag & Drop können Sie das wordcount-Makro in der Funktionsleiste platzieren und dort jederzeit mit einem Klick starten

Kasten 1: Wofür steht die 64?

In der msgbox-Anweisung des wordcount-Makros steht ziemlich am Ende der Zeile die Zahl 64. Diese steht für den Typ der Dialogbox. Sie können in OpenOffice Basic zwischen verschiedenen Typen wählen, und demetnsprechend erscheinen Schaltflächen und Symbole in der Dialogbox. Bis auf die 64, die als Informationsbox nur eine Schaltfläche hat, können Sie alle anderen auch kombinieren, indem Sie einfach die Zahlen addieren: So ergibt 563 eine Dialogbox mit Erklärungssymbol und den Schaltflächen Ja, Nein und Abbrechen, wobei Abbrechen den Fokus hat: 563 = 512 + 48 + 3. Folgende Werte können Sie benutzten:

  • 0 : Nur OK-Schaltfläche
  • 1 : OK- und Abbrechen-Schaltfläche
  • 2 : Abbrechen- und Wiederholen-Schaltfläche
  • 3 : Ja-, Nein- und Abbrechen-Schaltfläche
  • 4 : Ja- und Nein-Schaltfläche
  • 5 : Wiederholen- und Abbrechen-Schaltfläche
  • 16 : Stop-Symbol
  • 32 : Fragezeichen-Symbol
  • 48 : Erklärungs-Symbol
  • 64 : Informations-Symbol
  • 256 : Zweite Schaltfläche voreingestellt
  • 512 : Dritte Schaltfläche voreingestellt
LinuxUser 05/2003 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben