![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Text zwischen Tags finden und bearbeiten |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
|||||||||||||||||||||
![]() |
|
![]() |
Die Suchen-Funktion bzw. Suchen-und-Ersetzen-Funktion ist auch in VBA eine mächtige Funktion, die eine Vielzahl von Möglichkeiten mit sich bringt. Dieses ist ein <|Beispieltext|> für die Suche nach <|Tags|> In diesem Beispielsatz soll nach dem Text zwischen den Tags <| und |> gesucht werden; dabei sollen die Tags mitberücksichtigt werden. Als Ergebnis sollte der hervorgehobene Text entweder nur markiert oder ggf. auch gelöscht werden: Dieses ist ein <|Beispieltext|> für die Suche nach <|Tags|> Die nachfolgende Funktion verwendet nur das Range-Objekt, um im Text bestimmte Bereiche zu markieren und zu bearbeiten. Set rngText = ActiveDocument.Range(0,0) Anschließend wird der Range-Bereich reduziert, indem der Anfang hinter das gefunden Start-Tag verschoben wird (rng.SetRange) Danach wird im neuen Range-Bereich nach dem End-Tag gesucht. Wenn der End-Tag nicht gefunden wird, wird die Funktion beendet. Wird das End-Tag gefunden, wird der Range-Bereich rngText bis zum Ende des End-Tags erweitert. Über die Zusatzoption wird dann gesteuert, was mit dem gefundenen Text geschehen soll: nur farblich hervorheben oder löschen. Anschließend wird erneut nach dem Start-Tag gesucht. Und sofern ein weiteres Start-Tag gefunden wird (.Found = True), greift die Do...Loop-Schleife und es erfolgt ein erneuter Suchlauf nach dem End-Tag. Function fkt_Search(strStart As String, strEnd As String, bDelete As Boolean) Dim rng As Range Dim rngText As Range ' Range festlegen Set rng = ActiveDocument.Range ' Range festlegen Set rngText = ActiveDocument.Range(0, 0) rngText.Collapse wdCollapseStart ' Such-Schleife With rng.Find .Format = False .Text = strStart ' Suche nach Start-Tag .Execute Do While .Found = True ' Fundstelle mit Start-Tag anlegen rngText.SetRange rng.Start, rng.End ' Suchtextbereich reduzieren rng.SetRange rng.End, ActiveDocument.Range.End ' Suche nach End-Tag .Execute FindText:=strEnd, Forward:=True ' Abbruch wenn kein End-Tag If .Found = False Then Exit Function ' Fundstelle bis End-Tag erweitern rngText.SetRange rngText.Start, rng.End If bDelete = False Then ' fablich hervorheben rngText.Select rngText.Font.Color = wdColorAqua Else ' löschen rngText.Delete End If ' Suchtextbereich zur Endposition reduzieren rng.Collapse wdCollapseEnd ' Start-Tag suchen .Execute FindText:=strStart, Forward:=True Loop rng.Collapse wdCollapseEnd End With End Function Der Aufruf erfolgt aus einer Prozedur heraus, wobei als Parameter die Zeichenkette für das Start- und End-Tag angegeben werden muss sowie die Angabe, ob der Text nur markiert oder gelöscht werden soll. Sub SearchAndReplace() fkt_Search "<|", "|>", False End Sub |
![]() |
![]() |
Besucher: 0 online | 0 heute | 0 diesen Monat | 2326302 insgesamt | Seitenaufrufe: 94 | ![]() |
Letzte Änderung: 24.06.2006 | ![]() |
© 2001-18 Christian Freßdorf | ![]() |
Das Leben ist weder einfach noch verzwickt, weder klar noch dunkel, weder widerspruchsvoll noch zusammenhängend. Das Leben ist. Die Sprache allein ordnet oder verwirrt es, erhellt oder verdunklet es, zerstreut oder vereinigt es. Antoine de Saint-Exupéry |
powered by phpCMS and PAX |