Code:
Sub TBrange()
Dim bRange As Range
'
If ActiveDocument.Bookmarks.Exists("F1") Then
Set bRange = ActiveDocument.Bookmarks("F1").Range
bRange.Text = "der Text"
End If
'
' Textmarke recykeln
With ActiveDocument.Bookmarks
.Add Range:=bRange, Name:="F1"
End With
End Sub
Wir haben das gleiche Prinzip in einem alten Delphiprojekt genutzt. Also Ranges über Bookmarks definiert und neu befüllt, gesetzt. Wenn ich mich richtig erinnere war es das beste/schnellste Ergebnis von verschiedenen Varianten / Versuchen (und damals nicht selbstverständlich, es war robust).
Das war allerdings ohne Exists Prüfung, sondern eine Iteration in einem gegebenen Dokument durch die Liste der definierten Bookmarks.
Auf die Art konnte man beliebig große Feldinhalte befüllen und das Ganze auch bei mehrseitigen Dokumenten so schnell, dass man mit einem System/Mitarbeiter mehrere Hochleistungsdrucker in Betrieb halten kann.
Man muss nur aufpassen, dass man sich bei der Arbeit mit den Dokumenten nicht unbemerkt die Bookmarks zerstört. Aber vielleicht kann man das mit neueren Wordversionen auch besser sehen und bedienen.
Drumrum war noch eine Gesamtseitenkontrolle, um Fehldrucke/Fehlbefüllung zu erkennen und einseitig/mehrseitiges vorbedrucktes Papier nicht falsch zu bedrucken.