Text in vielen Tabellen ersetzen

21/09/2009 - 14:50 von Frieda Beyer | Report spam
Hallo NGler,

ich habe hier ein immer wieder neu zu erstellendes Word-Dokument mit
jeweils unterschiedlich vielen zum Teil gleichartigen Tabellen.

Ich möchte jetzt alle Tabellen mit einer Schleife durchlaufen und immer
dann, wenn in der ersten Zelle (erste Reihe, erste Spalte) der Text
"Mein Text" steht, soll in der gleichen Zeile (= oberste Zeile) in den
anderen Spalten das Wort "MeinWort" durch "NeuesWort"ersetzt werden.
Nicht in jeder Zelle der obersten Reihe ist MeinWort zu finden.

Leider passiert bei meinem folgenden Versuch nichts, ich wàre für Tipps
dankbar!

Sub TextInErsterZeileErsetzen()

For Each tbl In ActiveDocument.Tables
If tbl.Rows(1).Cells(1).Range.Text = "Mein Text" Then
tbl.Rows(1).Select
With Selection.Find
.Text = "MeinWort"
.Replacement.Text = "NeuesWort"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End If
Next tbl
End Sub


Gruß, Frieda
 

Lesen sie die antworten

#1 Thomas Gahler
21/09/2009 - 20:48 | Warnen spam
Hallo Frida


Leider passiert bei meinem folgenden Versuch nichts, ich wàre für Tipps
dankbar!


Kann sein, dass es nur an den beiden ehlenden Zeilen liegt
.ClearFormatting
.Replacement.ClearFormatting
Die sollten immer dabei sein, wenn mit dem .Find-Objekt gearbeitet wird.
Aber auch sonst verhàlt sich diese Objekt manchmal störisch

Verrsuche es mal mit diesen Zeilen



'
Sub Demo()
Dim tbl As Word.Table
Dim rng As Word.Range

For Each tbl In ActiveDocument.Tables
If InStr(1, tbl.Cell(1, 1).Range.Text, "Mein Text", vbBinaryCompare)
<> 0 Then
Set rng = tbl.Rows(1).Range

SuchenErsetzen _
strSuche:="Mein Wort", _
strErsetzen:="Neues Wort", _
rngBereich:=rng

End If
Next tbl
End Sub

Private Sub SuchenErsetzen( _
ByVal strSuche As String, _
ByVal strErsetzen As String, _
ByVal rngBereich As Word.Range)

With rngBereich.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = strSuche
.Replacement.Text = strErsetzen
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=wdReplaceAll
End With
End Sub
'




Thomas Gahler
MVP für Word
Co-Autor von »Microsoft Word-Programmierung.
Das Handbuch« (MS Press)


- Windows Vista (SP2), Office 2007 (SP1)

Ähnliche fragen