Gehen Sie zum Ende jeder Zeile und fetten Sie den Text in Klammern

Dec 30 2020

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: -

  1. Überprüfen Sie jede Zeile auf einen Start von (
  2. Beginnen Sie mit der Auswahl des Textes in Klammern (einschließlich der Klammern), bis) als Ende eines Satzes gefunden wird
  3. Formatieren Sie den Text fett
  4. Tun Sie dies bis zum Ende der Datei
  5. 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

1 RichMichaels Dec 30 2020 at 22:12

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: [(] * [)]

Roy Dec 31 2020 at 13:51

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!

ZygD Dec 30 2020 at 16:54

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