2
www.ChF-Online.de  

Text zwischen Tags finden und bearbeiten (II)

   Neuigkeiten
   API-Aufrufe in VBA
   VBA2HTML
   Word
   Word-VBA
aktiv aktiv Verschiedenes
 Dateiname ohne Endung
 Dokumentstrukturanzeige
 Fenster anordnen
 Fensterliste
 Fensterliste (II)
 Kalender erstellen
 Kommentarinformationen
 Lesezeichen
 Beliebigen Ordner öffnen
 Position der Einfügemarke
 Seitenanfang/-ende
 Shapes ansprechen
 Sicherheitskopien erstellen
 Word-Startparameter
 Word-Startparameter II
 Startordner "Bild einfügen"
 Tags finden u. bearbeiten
aktiv  Tags finden/bearbeiten (II)
 Text2WordArt
 Textbausteine verwenden
 Textmarken (I)
 Textmarken (II)
 Überschrift zu Textmarke
 VBA-Konverter
 Wasserzeichen
 Zeichen tauschen
 Feld-Arbeiten
 Form-Sachen
 Menü-/Symbolleisten
 VBA und Lotus Notes
 VBA und Mail
 Inside VBAIDE
 Von Word nach Outlook
 Fix-und-Fertiges/Projekte
   Word2007 (RibbonX)
   Word2010 (RibbonX)
   Outlook-VBA
   Links zu VB(A)
   DocToHelp
   Netport Express XL
   Astronomie
   Gästebuch
   Volltextsuche
   Sitemap
   Buch:Word-Programmierung
   Impressum & Kontakt
   Datenschutzerklärung
Getestet unter Word2000Getestet unter WordXPGetestet unter Word2003  
Makro/Datei speichern
Print

Ausgehend von dem Makro fkt_Search() in  Text zwischen Tags finden und bearbeiten, in dem die Such-Tags mitmarkiert und bearbeitet werden, werden in diesem geänderten Makro wahlweise die Tags einbezogen oder nur der Text zwischen den Tags berücksichtigt.

Das folgende Beispiel sucht nach Texten, die zwischen zwei Tags (Start- und End-Tag) eingeschlossen sind.
Beispieltext:

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  |  2225132 insgesamt | Seitenaufrufe: 10   Letzte Änderung: 10.07.2006 © 2001-18 Christian Freßdorf
  Wie muß Adam das Gefühl ausgekostet haben, Dinge zu sagen, die vor ihm noch keiner gesagt hat!
Mark Twain
 powered by phpCMS and PAX