Ü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.