Einführung Word-Makros II: Bearbeiten des Codes eines Makros

Dieser Beitrag ist Teil 2 von (bisher) 3 Teilen in der Beitragsserie Einführung in Word-Makros.

Nachdem im ersten Teil dieser Einführung in Word-Makros das Aufzeichnen und Ausführen eines Word-Makros erläutert wurde, soll es nun um das Bearbeiten des Codes eines Word-Makros gehen. Damit kommt der Mehrwert von Word-Makros zur Automatisierung voll zur Geltung.

Der Visual-Basic-Editor

Bearbeitet wird der Code von Word-Makros im “Visual Basic-Editor”. Um diesen zu öffnen, gehen Sie am Mac im Menü auf “Extras” → “Makro” → “Visual Basic-Editor” oder drücken Sie unter Windows die Tastenkombination Alt + F11. Es erscheint das folgende Fenster:

Links im “Projektexplorer” sehen Sie auf oberster Ebene die globale Dokumentvorlage “Normal” sowie sämtliche gerade geöffneten Word-Dokumente. Wir konzentrieren uns hier auf die Makros in dieser globalen Dokumentvorlage “Normal.dotm” (zur Speicherung, Weitergabe und Organisation von Makros → in einem weiteren Teil der Einführung ). Unterhalb von “Normal” sehen Sie den Eintrag “Module” und darin den Eintrag “NewMacros” 1. Das ist der standardmäßige Speicherort aller neuen Makros. Der Inhalt von “NewMacros”, also der Code (= die Aneinanderreihung von Befehlen), wird auf der rechten Seite dargestellt 2. Sollten Sie dieses Teil-Fenster geschlossen haben, können Sie durch einen Doppelklick auf “NewMacros” dessen Inhalt wieder anzeigen lassen.

Von Interesse am Visual-Basic-Editor sind vor allem der Speicher-Button 3 zum Speichern Ihrer Änderungen in “Normal.dotm” sowie der Play-Button zum Ausführen des Makros 4. Möglichkeiten zum Ausführen eines Makros kennen wir ja schon aus dem ersten Teil dieser Einführung; diese funktionieren freilich weiterhin. Um Änderungen eines Makros im Visual-Basic-Editor umgehend zu testen, erweist sich aber der Play-Button als hilfreich. Wenn mehrere Makros vorhanden sind, wird stets dasjenige ausgeführt, innerhalb dessen sich der Cursor gerade befindet. Die Ausführung des Makros erfolgt immer in dem Word-Dokument, das Sie gerade geöffnet haben. Sofern mehrere Word-Dokumente geöffnet sind, erfolgt die Makroausführung in demjenigen Word-Dokument, das Sie zuletzt aktiviert hatten.

Aufbau und Inhalt eines Makros

Jedes Makro beginnt mit dem Befehl Sub. In derselben Zeile folgt ein Leerzeichen und dann der Name des Makros. Ohne Leerzeichen schließen sich daran eine öffnende und eine schließende runde Klammer an. Beendet wird jedes Makro mit dem Befehl End Sub.

Zur Erläuterung Ihres Makros für sich und für andere können Sie Kommentare zu dem Code einfügen. Ein Kommentar beginnt mit einem einfachen Anführungszeichen . Alles, was nach solch einem einfachen Anführungszeichen in einer Zeile steht, wird beim Ausführen des Makros ignoriert. Im Visual-Basic-Editor werden Kommentare in grüner Schrift dargestellt.

Beispiel

Schauen wir uns nun den Code des Makros an, das wir im ersten Teil dieser Einführung durch Aufzeichnung erstellt haben:

Sub Makro1()
'
' Makro1 Makro
' Fetten des Wortes links vom Cursor
'
    Selection.MoveLeft Unit:=wdWord, Count:=1, Extend:=wdExtend
    Selection.Font.Bold = wdToggle
    Selection.MoveRight Unit:=wdCharacter, Count:=1
End Sub

In der Zeile 1 wird das Makro mit dem Namen “Makro1” begonnen. Dieses wird in Zeile 9 wieder geschlossen.

Die Zeilen 2 bis 5 beginnen alle mit einem einfachen Anführungszeichen und enthalten deshalb nur Kommentare, die keine Auswirkung auf die Funktionsweise des Makros haben. Der Kommentar “Fetten des Wortes links vom Cursor” ist die Beschreibung der Funktionsweise des Makros, die wir selbst bei dessen Aufzeichnung eingegeben hatten.

Die Zeilen 6 bis 8 enthalten die eigentlichen Befehle des Makros. Selection.MoveLeft in Zeile 6 bedeutet, dass von der aktuellen Cursor-Position aus eine Bewegung nach links stattfinden soll. Unit:=wdWord gibt an, dass die Bewegung wortweise erfolgen soll, wobei Count:=1 angibt, dass der Cursor um genau ein Wort bewegt werden soll. Extend:=wdExtend schließlich besagt, dass der Cursor nicht einfach verschoben wird, sondern dass dabei eine Markierung erfolgen soll. Wie Sie gesehen haben, werden die einzelnen Optionen eines Befehls jeweils durch Kommata voneinander getrennt. Zeile 6 bewirkt also eine Markierung von der aktuellen Cursor-Position aus nach links bis zum Anfang des Wortes.

Selection.Font.Bold = wdToggle in Zeile 7 bezieht sich auf die aktuelle Markierung, dabei auf die Schriftart und noch spezifischer auf die Eigenschaft “Fett” der Schriftart. Diese kann grundsätzlich die beiden Werte True und False haben. wdToggle bedeutet, dass der bisherige Wert in sein Gegenteil verkehrt wird. War der markierte Text bislang normal, wird er fett gedruckt. War er schon fett, so wird er auf normal gesetzt.

In Zeile 8 wird mit Selection.MoveRight der Cursor nach rechts bewegt. Wegen Unit:=wdCharacter und Count:=1 erfolgt diese Bewegung um genau ein Zeichen. Zeile 8 hat somit die gleiche Funktion, wie wenn Sie auf der Tastatur die Taste “Pfeil nach rechts” drücken würden. Würde Zeile 8 fehlen, so würde das Makro zwar die “Fett”-Eigenschaft des links vom Cursor stehenden Wortes verändern, dieses Wort bliebe aber markiert und würde daher beim Weiterschreiben gelöscht.

Veränderung des Beispiels

Zur Übung wollen wir nun unser Makro dahingehend verändern, dass die drei rechts vom Cursor stehenden Buchstaben unterstrichen werden sollen. Sind sie bereits unterstrichen, so sollen sie ihre Unterstreichung behalten.

Dazu haben wir zunächst in Zeile 6 MoveLeft in MoveRight zu ändern. Da wir den Cursor nicht wortweise, sondern nur buchstabenweise bewegen wollen, haben wir Unit:=wdWord in Unit:=wdCharacter zu ändern. Für die Markierung um genau drei Zeichen ist bei Count:= der Wert 3 anzugeben. Bei Extend:= kann die Einstellung auf wdExtend bleiben, da die drei Zeichen ja markiert werden sollen.

In Zeile 7 wollen wir nicht die Schriftarteigenschaft “Fett”, sondern “Unterstrichen” ändern. Dazu haben wir Bold in Underline zu ändern. Da wir den bisherigen Wert nicht in sein Gegenteil verändern wollen, sondern die Unterstreichung unabhängig davon erfolgen soll, ob sie bereits vorhanden war, ändern wir wdToogle in True.

In Zeile 8 schließlich wollen wir ein Drücken der Taste “Pfeil nach links” bewirken. Dazu brauchen wir lediglich Right in Left zu ändern.

Allein der Klarheit wegen sollten wir den Kommentar “Fetten des Wortes links vom Cursor” noch in “Unterstreichen der drei Zeichen rechts vom Cursor” abändern. 

Der komplette Code des veränderten Beispiels sieht demnach wie folgt aus:

Sub Makro1()
'
' Makro1 Makro
' Unterstreichen der drei Zeichen rechts vom Cursor
'
    Selection.MoveRight Unit:=wdCharacter, Count:=3, Extend:=wdExtend
    Selection.Font.Underline = True
    Selection.MoveLeft Unit:=wdCharacter, Count:=1
End Sub

Tippfehler

Vor Tippfehlern in den Befehlen brauchen Sie im Übrigen keine Angst zu haben: Wenn Sie sich bei einem Makro-Befehl vertippt haben und dieser daher nicht erkannt werden kann, wird beim Ausführen des Makros darauf hingewiesen:

Sie können in diesem Dialog auf “OK” klicken. Die Ausführung des Makros ist dann unterbrochen, was Sie an dem gelben Pfeil und der gelben Hinterlegung der ersten Zeile des Makros erkennen 1:

Korrigieren Sie einfach den Tippfehler, klicken Sie dann zum Stoppen der unterbrochenen Makroausführung auf den quadratischen Beenden-Button 2 und zum erneuten Ausführen des korrigierten Makros wiederum auf den Play-Button 3.

Nun sind Sie mit dem Bearbeiten des Codes eines Work-Makros vertraut. In Teil III dieser Einführung in Word-Makros werden Sie lernen, wie man selbst direkt im Visual-Basic-Editor ein neues Makro erstellt.

Seriennavigation← Einführung Word-Makros I: Allgemeines, Aufzeichnen und Ausführen eines MakrosEinführung in Word-Makros III: Grundsätze des Makro-Programmierens →