![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Text zwischen Tags finden und bearbeiten (II) |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
|||||||||||||||||||||
![]() |
|
![]() |
Ausgehend von dem Makro fkt_Search() in
Das folgende Beispiel sucht nach Texten, die zwischen zwei Tags (Start- und End-Tag) eingeschlossen sind. 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 soll nur der hervorgehobene Text zwischen den Tags berücksichtigt werden: Dieses ist ein <|Beispieltext|> für die Suche nach <|Tags|> Anhand des optionalen boolschen Parameters bInclude kann gesteuert werden, ob die Tags in eine Aktion einbezogen werden sollen oder nicht; standardmäßig ist bInclude = False, also ohne Tags vorgegeben. Zum Reduzieren des Fundbereichs (rngText) wird das Range-Objekt um die Länge der Start- und End-Tags reduziert und neu gesetzt rngText.SetRange rngText.Start + Len(strStart), rngText.End - Len(strEnd) Das geänderte Makro sieht dann folgendermaßen aus, wobei sich die auszuführende Aktion auch in ein separates Makro auslagern lässt, dem jeweils nur die angepassten Range-Objekte mitgegeben werden. Function fkt_Search2(strStart As String, strEnd As String, Optional bInclude As Boolean = False) 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 bInclude = True Then ' mit Tags ' Beispiel: einfärben rngText.Select rngText.Font.Color = wdColorAqua ElseIf bInclude = False Then ' ohne Tags ' Beispiel: einfärben rngText.SetRange rngText.Start + Len(strStart), rngText.End - Len(strEnd) rngText.Select rngText.Font.Color = wdColorAqua 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 die Tags mitmarkiert werde sollen oder nur der Text zwischen den Tags. Sub subSearch2() fkt_Search2 "#", "#", False End Sub |
![]() |
![]() |
Besucher: 0 online | 0 heute | 0 diesen Monat | 2264870 insgesamt | Seitenaufrufe: 122 | ![]() |
Letzte Änderung: 10.07.2006 | ![]() |
© 2001-18 Christian Freßdorf | ![]() |
Geschichte ist wenig mehr als ein Bild der menschlichen Untaten und Unglücke. Voltaire, 1694-1778, frz. Schriftsteller und Philosoph |
powered by phpCMS and PAX |