So schreiben Sie Word-Makros – einfach erklärt!

Foto des Autors

Word ist Makro-fähig. Sprich Sie können in Word programmieren und Arbeitsabläufe automatisieren. Dazu brauchen Sie Kenntnisse in Visual Basic für Applikationen. Lesen Sie hier die wichtigsten Grundlagen und erfahren Sie, wie Sie ganz ohne Programmierkenntnisse Makros schreiben können.

Word Makros aktivieren

Zunächst müssen Sie die Entwicklertools aktivieren, um Word programmieren zu können. Das geht so:

  1. Öffnen Sie das Menü Datei – Optionen.
  2. Klicken Sie auf Menüband anpassen
  3. Aktivieren Sie unter Hauptregisterkarten den Eintrag Entwicklertools.
Entwicklertools aktivieren in Word
Bevor Sie Word programmieren können, müssen Sie die Entwicklertools aktivieren.
Werbung

Makro programmieren in Word

Das sollten Sie über die Makroprogrammierung wissen

  • Word arbeitet mit Visual Basic for Applications, kurz VBA.
  • Die Sprache arbeitet objektorientiert. Das bedeutet:
    • Wörter, Dokumente und so weiter sind Objekte.
    • Diese Objekte haben Eigenschaften, die Sie ändern können.
    • Jedem Objekt sind Methoden zugeordnet, die Sie ausführen können.
    • Lesen Sie hier mehr über Objektorientierte Programmierung in VBA.
  • Jedes Word-Makro wird als separates Unterprogramm in einer gemeinsamen Quelltextdatei gespeichert.
  • Der von Word erzeugte Rahmen, in dem die Befehle für das Makro „MeinMakro“ stehen, sieht so aus:
    Sub MeinMakro()
    End Sub

    An Stelle von MeinMakro steht der von Ihnen vergebene Makroname.

Makro-Editor öffnen

  1. Öffnen Sie im Reiter Ansicht den Eintrag Makros – Makros anzeigen.
  2. Im Feld Makroname geben Sie einen Namen für Ihr Makro ein.
  3. Klicken Sie dann rechts auf den Knopf Erstellen.
  4. Nun öffnet sich der Editor.
Makros anzeigen in Word
Im Menü Ansicht können Sie die vorhandenen Makros anzeigen lassen oder neue schreiben.

Beispiel-Makro: Mittlere Satzlänge ermitteln

Unser Beispielmakro ermittelt für den aktuellen Text die durchschnittliche Satzlänge in Wörtern.

Die Logik hinter dem Programm sieht so aus:

  • Word erlaubt es, eine Schleife über alle Sätze in einem Bereichs laufen zu lassen.
  • Pro Durchlauf, also für jeden Satz wird dann die Wortlänge ermittelt und je ein Zähler für die Schleifendurchgänge und ein Summenzähler für die Wörter mitgeführt.
  • Am Ende teilt das Makro die Wortsumme duerch die Anzahl der Sätze und zeigt den Durchschnittswert.

Hinweis: Die Aufgabe hier lässt sich auch wesentlich einfacher ausdrücken, als in unserem Beispiel. Das geht, indem man die Anzahl der Wörter des Dokuments durch die Anzahl der Sätze teilt. Aber wir brauchen die Schleife als Beispiel 😉 . Hier vorab die Kurzversion:

Sub KurzWort()
MsgBox "Wörter pro Satz: " + Str(Int(ActiveDocument.Words.Count / ActiveDocument.Sentences.Count))
End Sub

Aber jetzt zum Beispiel mit Schleife und Variablen. Kopieren Sie die folgenden Zeilen in Ihren Word-Makroeditor. (Achtung! Die erste und die letzte Zeile sollten Sie nicht mit kopieren, da sie im Makro-Editor schon vorgegeben sind.)

Sub Wortzähler()
Dim s As Range
Dim numWords As Integer
Dim numSentences As Integer
numSentences = 0
numWords = 0
For Each s In ActiveDocument.Sentences
numSentences = numSentences + 1
numWords = numWords + s.Words.Count
Next
MsgBox "Durchschnittliche Wörter je Satz: " + Str(Int(numWords / numSentences))
End Sub

So funktioniert das Makro

  1. Zunächst definiert das Makro Variablen mit der Anweisung Dim.
    • Die Variable s wird als Range definiert.
    • Dabei handelt es sich um ein Objekt, das einen bestimmten Bereich des aktuellen Dokuments beinhaltet.
    • In unserem Beispiel werden es die einzelnen Sätze des Dokuments sein.
    • Die Variablen numSentences und numWords speichern die Anzahl der Sätze und Wörter im Dokument.
  2. Jetzt kommt der Beginn der Schleife mit
    For Each s In ActiveDocument.Sentences
    In jedem Schleifendurchgang wird die Variable s mit einem weiteren Satz des Dokuments gefüllt.
  3. In der Schleife wird zunächst der Satzzähler um 1 erhöht.
  4. Dann wird die Variable numWords hochgezählt:
    numWords = numWords + s.Words.Count
    Dabei spielt unser Range-Objekt s eine wichtige Rolle. Mit Words.Count zählt das Makro die in s enthaltenen Wörter und addiert sie zum bisherigen Stand von numWords.
  5. Mit Next startet der nächste Schleifendurchlauf.
  6. Sobald alle Sätze des Dokuments durchgezählt sind, verlässt das Programm die Schleife.
  7. MsgBox zeigt schließlich das Ergebnis an. Dabei werden im Ergebnis zunächst mit Int alle Nachkommastellen abgeschnitten und dann das Ergebnis mit Str als Zeichenkette formatiert ausgegeben. Für das Ergebnis selbst teilen wir die Anzahl der Wörter durch die Anzahl der Sätze.

Das Beispielmakro ausführen

  1. Klicken Sie im Makro-Editor auf Ausführen – Sub/UserForm ausführen.
  2. Das Makro startet dann und liefert entweder das Ergebnis oder eine Fehlermeldung.
  3. Falls eine Fehlermeldung erscheint, klicken Sie darin auf Hilfe, um eine genauere Erläuterung zu erhalten. (In den meisten Fällen handelt es sich um Tippfehler.)
Ausgabe Makro Wortzähler
Ausgabe Makro Wortzähler

Falls Sie ein Makro häufig verwenden wollen, weisen Sie dem Makro eine Tastenkombination zu.

Werbung
Foto des Autors

Martin Goldmann

Martin ist seit 1986 begeistert von Computern und IT. Er arbeitete von 1986 bis 2011 als Autor und Redakteur für diverse Computer-Zeitschriften. Seit 2011 ist Martin Goldmann als Kameramann und Redakteur in der Videoproduktion tätig und hält Video-Schulungen. Doch das Thema Computer hat ihn nie los gelassen. Seine Schwerpunkte hier auf Tippscout.de: Apple-Software, Videoproduktion, Synthesizer.