Gehen Sie zum Ende jeder Zeile und fetten Sie den Text in Klammern
Ich muss die Formatierung bestimmter Wörter am Ende jeder Zeile in MS Word automatisieren. Da ich aufgrund von Einschränkungen der Word-Makros kein Makro für die Arbeit aufzeichnen konnte, muss ich es hier posten. Ich muss nur Folgendes tun: -
- Überprüfen Sie jede Zeile auf einen Start von (
- Beginnen Sie mit der Auswahl des Textes in Klammern (einschließlich der Klammern), bis) als Ende eines Satzes gefunden wird
- Formatieren Sie den Text fett
- Tun Sie dies bis zum Ende der Datei
- Ausnahme: Formatieren Sie keine Überschriften, die bereits fett und unterstrichen sind.
Wie könnte ich das machen? Oder korrigieren Sie meinen Code, da er überhaupt nichts bewirkt.
Sub m1()
'
' m1 Macro
'
'
Dim i As Integer
With Selection.Find
For i = 1 To lastRow
.Forward = True
.ClearFormatting
.MatchCase = False
.Wrap = wdFindContinue
.Execute FindText:="("
Selection.EndKey Unit:=wdLine, Extend:=wdExtend
Selection.Font.Bold = wdToggle
Selection.Font.BoldBi = wdToggle
Next
End With
End Sub
Antworten
Möglicherweise benötigen Sie kein Makro, wenn Sie wissen, dass der Stil des Haupttextes Ihres Dokuments immer ein bestimmter festgelegter Stil ist, der kein Überschriftenstil ist. Richten Sie Ihr Suchen und Ersetzen wie folgt ein:

Wenn der Platzhaltercode aus dem Bildschirmclip schwer zu lesen ist, lautet er: [(] * [)]
Es ist mir endlich gelungen, diesen Code zu erstellen:
Sub m1()
Selection.HomeKey Unit:=wdStory
With Selection.Find
Do While .Execute(FindText:="(", Forward:=True, MatchWildcards:=False) = True
Selection.EndKey Unit:=wdLine, Extend:=wdExtend
Selection.Font.Bold = wdToggle
Selection.Font.BoldBi = wdToggle
Selection.EndKey Unit:=wdLine
Loop
End With
End Sub
Es hat funktioniert! :) Danke für die Unterstützung!
MS Word funktioniert nicht mit Zeilen. Der folgende VBA-Code findet Absätze, die mit Klammern enden und zusammen mit dem Inhalt fett gedruckt sind.
Sub Bold_ending_parentheses()
Dim par As Word.Paragraph
Dim str As String
Dim closes As Byte
Dim opens As Long
For Each par In ActiveDocument.Paragraphs
str = StrReverse(par.Range.Text)
closes = InStr(Left(str, 4), ")")
If closes Then
opens = InStr(str, "(")
If opens Then
With par.Range
.Find.Text = StrReverse(Mid(str, closes, opens - closes + 1))
Do
.Find.Execute
If .Find.Found Then .Font.Bold = True
Loop While .Find.Found
End With
End If
End If
Next
End Sub
BEARBEITEN:
Ein Beispiel für die Verwendung von Suchen und Ersetzen. In diesem Fall ist der gesamte Text in Klammern fett gedruckt (ohne Berücksichtigung der Anforderung, am Ende eines Absatzes / einer Zeile zu stehen):
Sub ApplyBoldWithinParentheses()
With ActiveDocument.Content.Find
.ClearFormatting
.Text = "[(]*[)]"
.Replacement.Font.Bold = True
.Format = True
.MatchWildcards = True
.Execute Replace:=wdReplaceAll
End With
End Sub