각 줄의 끝으로 이동하고 괄호 안의 굵은 텍스트

Dec 30 2020

MS Word의 각 줄 끝에서 특정 단어의 서식을 자동화해야합니다. 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

MS Word는 선에서 작동하지 않습니다. 다음 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