Suchen von zitiertem Text in VBA (Microsoft Word)
Jennifer braucht in einem Makro eine Möglichkeit, eine Zeichenfolge zu finden, die entweder von intelligenten oder geraden Anführungszeichen (oder einer Mischung aus beiden) umgeben ist. Sie scheint nicht die richtige Mischung von Befehlen für die Find-Methode zu finden, um alle Instanzen eines solchen Textes in allen Versionen von Word zu finden.
Es ist wichtig, klar zu machen, was durchsucht wird. In diesem Tipp wird davon ausgegangen, dass Ihr Makro die Suche nach einer von Anführungszeichen umgebenen spezifischen Zeichenfolge erfordert, nicht nach einer von Anführungszeichen umgebenen jede Zeichenfolge. In einem Dokument, das zwei Zeichenfolgen in Anführungszeichen wie „Mein zitierter Text“ und „Text in Anführungszeichen“ enthält, möchten Sie beispielsweise nur eine der Zeichenfolgen suchen, für die Sie den Text im Voraus kennen, nicht beide Zeichenfolgen .
In diesem Fall ist es in Ordnung, die Find-Methode zu verwenden, wie Sie bemerken. Die Frage ist, wie Sie die Möglichkeit von intelligenten Anführungszeichen und geraden Anführungszeichen in dem, was Sie suchen, berücksichtigen können. Glücklicherweise stimmt die Find-Methode standardmäßig sowohl mit geraden als auch mit intelligenten Anführungszeichen austauschbar überein. Der entscheidende Punkt ist, zu wissen, wie Sie festlegen können, dass die Anführungszeichen in die Suche einbezogen werden sollen. Das folgende Code-Snippet sollte den Trick ausführen:
Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = """my quoted text""" .Format = False .MatchWildcards = False End With Selection.Find.Execute
Der Schlüssel in diesem Code ist, wie Informationen der .Text-Eigenschaft zugewiesen werden. Beachten Sie, dass alles, wonach Sie suchen (in diesem Fall „mein zitierter Text“), auf jeder Seite von drei Anführungszeichen umgeben ist. Der Grund dafür ist eher geheimnisvoll: Die Zeichenfolge, nach der Sie suchen, muss in Anführungszeichen gesetzt werden. Dies wird von VBA verlangt. Dies wird hier gezeigt:
"my quoted text"
Da Sie zu Beginn Ihrer Suche ein tatsächliches Anführungszeichen wünschen, müssen Sie ein zweites Anführungszeichen als „Trennzeichen“ einfügen, um anzugeben, dass Sie das Anführungszeichen suchen möchten. Dies bedeutet, dass am Anfang jetzt drei Anführungszeichen stehen:
"""my quoted text"
Die gleiche Technik für zusätzliche Anführungszeichen als Trennzeichen gilt auch für das Ende der Zeichenfolge, sodass Sie am Ende das erhalten, was im Code-Snippet angezeigt wird.
Wenn der Code ausgeführt wird, findet Word die Zeichenfolge pflichtbewusst, umgeben von einer beliebigen Mischung aus geraden oder intelligenten Anführungszeichen, je nach Wunsch.
Es sollte auch beachtet werden, dass dieser Ansatz nur funktioniert, wenn Sie eine reguläre Suche durchführen und die Eigenschaft .MatchWildcards auf False gesetzt ist.
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der WordTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
WordTips ist Ihre Quelle für kostengünstige Microsoft Word-Schulungen.
(Microsoft Word ist die weltweit beliebteste Textverarbeitungssoftware.) Dieser Tipp (11638) gilt für Microsoft Word 97, 2000, 2002 und 2003. Sie finden eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Word (Word 2007) und später) hier: