Microsoft Word

Überschrift
Lorem ipsum dolor sit amet consectetuer venenatis diam at Nam pede. Ligula mauris semper justo Curabitur justo orci Sed quam nunc volutpat. Pellentesque Quisque sem dignissim dis sem et convallis vitae semper adipiscing. Metus eget Praesent elit elit tincidunt a pharetra Maecenas a lorem. Et ipsum wisi tincidunt nec eros neque ut nisl at Nam. Congue dui adipiscing justo rutrum id interdum.

Texte kann man sich auch eindimensional vorstellen: Als „Endlosband“, mit einem Anfang und einem Ende. Will man per VBA darauf zugreifen, ist es meistens sinnvoll, sich den Text in dieser Weise vorzustellen, weil so die einzelnen Zeichen durchnummeriert werden können: Das erste Zeichen hat die Zeichenposition 0, das zweite die Position 1 usw. Innerhalb des Textes stehen Absätze (Paragraphs), Textmarken (Bookmarks) und andere Objekte automatisch als eigene Auflistungen zur Verfügung, deren Text ebenfalls entsprechend durchnummeriert ist.

Überschrift Lorem ipsum dolor sit amet consectetuer venenatis diam at Nam pede. Ligula mauris semper justo Curabitur justo orci Sed quam nunc volutpat. Pellentesque Quisque sem dignissim dis sem et convallis vitae semper adipiscing. Metus eget Praesent elit elit tincidunt a pharetra Maecenas a lorem. Et ipsum wisi tincidunt nec eros neque ut nisl at Nam. Congue dui adipiscing justo rutrum id interdum.

Häufig programmiert man in Word rund um einen Text, den man zuvor markiert hat. Der aktuell markierte Text wird in VBA durch das Selection-Objekt dargestellt. Mit dem Selection-Objekt kann man all das machen, was man auch in Word selbst mit der Auswahl machen kann.

Selection.BoldRun

Die BoldRun-Methode formatiert einen Text fett (bzw. hebt diese Formatierung auf, falls sie schon vorhanden war).

Anfang und Ende einer Markierung werden mit Selection.Start bzw. Selection.End festgelegt. Das sind Eigenschaften vom Typ Long, die die jeweilige Zeichenposition enthalten. Das Selection-Objekt hat eine Reihe Methoden, um bestimmten Text zu markieren, etwa in Abhängigkeit zur aktuellen Formatierung. Die Namen dieser Methoden beginnen mit „Select...“.

Ganz ähnlich wie Selection arbeitet das Range-Objekt, nur dass es sich dabei nicht um den markierten Bereich handeln muss, sondern um beliebige, frei definierbare Bereiche. Range ist gegenüber Selection die bessere Wahl, wenn nicht gerade der User selbst den Bereich bestimmen soll.

Public Sub Bereiche()

Dim Bereich1 As Range, Bereich2 As Range

Set Bereich1 = Selection.Range

Set Bereich2 = ActiveDocument.Paragraphs(3).Range
Bereich2.Start = Bereich2.Start + 1

MsgBox Bereich2

End Sub

In diesem Beispiel wurde in die Range-Variable Bereich1 einfach der aktuell markierte Text gespeichert. Ändert sich danach die Markierung, ist Bereich1 davon nicht betroffen. In Bereich2 hingegen wird der Inhalt des dritten Absatzes des aktuellen Dokuments gespeichert und dann das erste Zeichen wieder herausgenommen. Zugleich sehen wir hier, dass das aktuelle Dokument durch ActiveDocument dargestellt wird. Man kann aber auch ein Dokument aus der Documents-Auflistung wählen.

Ein vollständiger Überblick über das Objektmodell findet sich auf den Seiten von Microsoft. Alternativ kann man auch ein Buch zu Microsoft Word bei Amazon kaufen.