各行の終わりに移動し、括弧内に太字のテキストを入力します

Dec 30 2020

MSWordの各行の終わりにある特定の単語の書式設定を自動化する必要があります。Wordマクロの制限により、仕事をするためのマクロを記録できなかったので、ここに投稿する必要があります。私が必要とするのは次のことをすることだけです:-

  1. (の開始について各行を確認してください
  2. )が文の終わりとして見つかるまで、括弧内のテキスト(括弧を含む)の選択を開始します
  3. テキストを太字にフォーマットする
  4. ファイルの終わりまでこれを行います
  5. 例外:すでに太字で下線が引かれている見出しはフォーマットしないでください。

どうすればそれができますか?または、まったく何もしていないので、コードを修正してください。

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

回答

1 RichMichaels Dec 30 2020 at 22:12

ドキュメントの本文のスタイルが常に見出しスタイル以外の特定の指定されたスタイルであることがわかっている場合は、マクロは必要ない場合があります。次のように検索と置換を設定します。

ワイルドカードコードを画面クリップから読み取るのが難しい場合は、次のようになります。[(] * [)]

Roy Dec 31 2020 at 13:51

私はついにこのコードを構築することに成功しました:

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

うまくいきました!:) 手助けありがとう!

ZygD Dec 30 2020 at 16:54

MSWordは行では機能しません。次のVBAコードは、括弧で終わる段落を検索し、内容とともに太字にします。

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

編集:

検索と置換の使用例。これを使用すると、括弧内のすべてのテキストが太字になります(段落/行の終わりにあるという要件は考慮されていません)。

Sub ApplyBoldWithinParentheses()
   With ActiveDocument.Content.Find
      .ClearFormatting
      .Text = "[(]*[)]"
      .Replacement.Font.Bold = True
      .Format = True
      .MatchWildcards = True
      .Execute Replace:=wdReplaceAll
   End With
End Sub