Ich würde gerne Absatzmarken innerhalb eines Textfeldes (Name: Anschrift) mittels VBA makro löschen. Das Problem ist, dass jeweils nur die ersten 4 Zeilen innerhalb des Textfeldes nach diesen Absatzmarken durchsucht werden sollen. Es handelt sich um einen Brief als Vorlage, in dem Textfeld sind die Adressen der Empfänger. Diese werden von einem externen Programm befüllt. Teilweise sind sowohl die ua und die ia Daten ausgefüllt, teilweise nur ua oder ia. Nun soll, egal was ausgefüllt wurde, immer der Adressat (auch wenn nur ia-Daten ausgefüllt wurden) ganz oben stehen, die Absätze zwischen den ua und ia Daten aber bestehen bleiben. Sind keine ua Daten vorhanden, sind die ersten 4 Zeilen leer.
So sieht die Vorlage aus:
${#ua1}
${#ua2}
${#ua4}
${#ua5}
${#ia1}
${#ia2}
${#ia4}
${#ia5}
Mein Makro:
Sub Anschrift()
'
' Anschrift Makro
'
'
ActiveDocument.Shapes.Range(Array("Anschrift")).Select
Selection.MoveDown Unit:=wdLine, Count:=5, Extend:=wdExtend
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "^p^p^p^p"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = True
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceOne
End Sub
Dieses löscht zwar immer die 4 Absätze aber leider auch die zwischen den Adressaten wenn ia- und ua-Daten dort stehen. Es ist mir unklar, wie zu erreichen ist, dass nur die ersten 4 Zeilen innerhalb des Textfeldes nach Absätzen durchsucht werden und ggf ersetzt werden.
Für Hilfe wäre ich dankbar.
Word 2016
|