Word XP: Ersetzen in einem markierten Textteil

12/04/2009 - 18:13 von Dr. Dirk Hochlenert | Report spam
Liebe NG,

ich haben in Word XP etas programmiert, wonach ein Schlüsselwort erkannt
wird, die Markierung über extend auf den Absatz erweitert wird und dann
Ersetzungen in diesem Absatz vorgenommen werden. Aus einem, mir nicht
erkennbaren Grund werden dann diese Ersetzungen im gesamten Text
vorgenommen. Ich habe das dann mit dem Macrorecorder nochmal aufgenommen
und wàhrend der Aufnahme làuft es richtig und beim ablaufen lassen nicht.
Codeschnipsel:

...
Selection.Find.ClearFormatting
With Selection.Find
.Text = "Medikation"
.Replacement.Text = "^p^p"
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
Selection.Extend
Selection.Extend
Selection.Extend
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = " "
.Replacement.Text = "^t"
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll

nun bin ich schon ein paar Stunden am rumprobieren (es wirkt ja, als ob
das einfach gehen müßte) und etwas am Ende - weiß jemand Rat?

Euer Dirk

Dr. Dirk Hochlenert
 

Lesen sie die antworten

#1 Lisa [Nora Richter]
12/04/2009 - 19:38 | Warnen spam
Hallo Dirk,

und wàhrend der Aufnahme làuft es richtig und beim ablaufen lassen nicht.
Codeschnipsel:


Selection.Find.ClearFormatting
With Selection.Find
.Text = "Medikation"
.Replacement.Text = "^p^p"
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
Selection.Extend
Selection.Extend
Selection.Extend
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = " "
.Replacement.Text = "^t"
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll



Du könntest die letzte Zeile ersetzen durch (statt wdReplaceAll:
wdReplaceOne):

Selection.Find.Execute Replace:=wdReplaceOne

Damit sollte nur die eine Fundstelle bearbeitet werden.

Gruß
Lisa
_____
http://www.schreibbuero-richter.de/vba.html

Ähnliche fragen