특정 색상으로 강조 표시된 텍스트 찾기 및 수정

JJc

아래에 Word 문서에서 강조 표시되고 밑줄이 그어진 텍스트를 찾아 수정하는 VBA 코드가 있습니다 (즉, "x"로 바꾸고 검은 색으로 강조 표시).

다른 색상으로 강조 표시된 텍스트는 그대로두고 청록색 (또는 선택한 특정 색상)으로 강조 표시된 텍스트 만 식별하고 수정하고 싶습니다.

여러 가지 방법으로 코드를 변경하려고했지만 아무것도 작동하지 않습니다.

Sub Redact()

    ' Redact Macro
    ' Macro to redact underlined text
    ' If redacted, text will be replaced by x's, coloured black and highlighted black

    Dim OldText, OldLastChar, NewLastChar, NewText, ReplaceChar As String
    Dim RedactForm As Integer
    Dim flag As Boolean

    Application.ScreenUpdating = False

    ReplaceChar = "x"

    flag = True

    While flag = True

        ' Find next selection
        Selection.Find.ClearFormatting
        Selection.Find.Font.Underline = wdUnderlineSingle
        Selection.Find.Highlight = True
        Selection.Find.Replacement.ClearFormatting
        With Selection.Find
            .Text = ""
            .Replacement.Text = ""
            .Forward = True
            .Wrap = wdFindAsk
            .Format = True
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With

        Selection.Find.Execute

        If Selection.Font.Underline = False Then
            flag = False
        End If

        ' Create replacement string
        ' If last character is a carriage return (unicode 13), then keep that carriage return
        OldText = Selection.Text
        OldLastChar = Right(OldText, 1)
        NewLastChar = ReplaceChar
        If OldLastChar Like "[?*#]" Then NewLastChar = String(1, 13)
        NewText = String(Len(OldText) - 1, ReplaceChar) & NewLastChar

        ' Replace text, black block
        Selection.Text = NewText
        Selection.Font.ColorIndex = wdBlack
        Selection.Font.Underline = False
        Selection.Range.HighlightColorIndex = wdBlack
    Wend

    Application.ScreenUpdating = True

End Sub
신디 마스터

하이라이트 색상을 식별하기 위해 필요한 것은 속성 Range.HighlightColorIndex입니다.

아래 코드를 다소 간소화했습니다.

  1. 문서의 시작 부분에서 검색이 시작되는지 확인했습니다 (필요하지 않은 경우 제거 / 주석 처리 할 수 ​​있지만 테스트 중에 문제가 발생하지 않음). Selection.HomeKey wdStory

  2. .Wrap처음부터 끝까지 검색을 실행하는 것이 일반적이므로 'wdFindStop'으로 설정 합니다. 다시 말하지만, 문서 시작 부분에서 다시 시작하라는 메시지를 명시 적으로 표시하려는 경우 다시 변경할 수 있습니다.

  3. 성공 flag여부를 테스트하기 위해 사용 방법 변경 Find.Execute되었습니다. 이 메서드는 true성공하면 반환 하고 그렇지 않으면를 반환 합니다 false. 선택 항목에 밑줄이 있는지 여부를 테스트하는 것은 마지막 성공 Find항목에 밑줄이 표시되고 아무것도 발견되지 않으면 선택 항목이 이동 하지 않기 때문에 신뢰할 수 없습니다.

  4. 검색이 성공하고 발견 된 밑줄이있는 텍스트가 청록색으로 강조 표시되면 수정 조작이 수행됩니다.

나는 또한 While...Wend새로운 Do...Loop구조로 더 이상 사용되지 않는을 변경했습니다 . 이것은 루핑 테스트를 구성하는 방법에서 훨씬 더 유연합니다.

Sub Redact()

    ' Redact Macro
    ' Macro to redact underlined text
    ' If redacted, text will be replaced by x's, coloured black and highlighted black

    Dim OldText, OldLastChar, NewLastChar, NewText, ReplaceChar As String
    Dim RedactForm As Integer
    Dim flag As Boolean

    Application.ScreenUpdating = False

    ReplaceChar = "x"

    'Make sure to start at the beginning of the document
    Selection.HomeKey wdStory
    Do

        ' Find next underline with highlight
        Selection.Find.ClearFormatting
        Selection.Find.Font.Underline = wdUnderlineSingle
        Selection.Find.Highlight = True
        Selection.Find.Replacement.ClearFormatting
        With Selection.Find
            .Text = ""
            .Replacement.Text = ""
            .Forward = True
            .Wrap = wdFindStop
            .Format = True
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With

        flag = Selection.Find.Execute

        If flag Then
            If Selection.Range.HighlightColorIndex = wdTurquoise Then
                ' Create replacement string
                ' If last character is a carriage return (unicode 13), then keep that carriage return
                OldText = Selection.Text
                OldLastChar = Right(OldText, 1)
                NewLastChar = ReplaceChar
                If OldLastChar Like "[?*#]" Then NewLastChar = String(1, 13)
                NewText = String(Len(OldText) - 1, ReplaceChar) & NewLastChar

                ' Replace text, black block
                Selection.Text = NewText
                Selection.Font.ColorIndex = wdBlack
                Selection.Font.Underline = False
                Selection.Range.HighlightColorIndex = wdBlack
                Selection.Collapse wdCollapseEnd
            End If
        End If

    Loop While flag

    Application.ScreenUpdating = True

End Sub

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

특정 패턴이 강조 표시된 터미널에서 텍스트보기

분류에서Dev

특정 패턴이 강조 표시된 터미널에서 텍스트보기

분류에서Dev

강조 표시된 텍스트를 주석에 자동으로 복사하도록 Okular 강조 표시 수정

분류에서Dev

HTML 텍스트 내에서 특정 텍스트를 검색하고 검색 문자열을 색상으로 강조 표시하는 방법

분류에서Dev

텍스트 상자에서 특정 텍스트를 강조 표시 할 수있는 방법이 있습니까?

분류에서Dev

사용자 지정 어댑터 목록보기에서 검색된 텍스트 강조 표시

분류에서Dev

mySQL 쿼리로 특정 텍스트 및 난수 찾기 및 바꾸기

분류에서Dev

특정 표 셀의 내용 가져 오기 및 텍스트 색상 변경

분류에서Dev

HTML 원시 텍스트에서 특정 텍스트 강조

분류에서Dev

창 크기 조정 및 텍스트가 두 줄에 표시 될 때 <li>에서 텍스트의 세로 정렬

분류에서Dev

텍스트에서 특정 단어를 강조 표시

분류에서Dev

Seurat DimPlot-다양한 색상으로 특정 셀 그룹 강조 표시

분류에서Dev

미리 정의 된 조건을 기반으로 텍스트 편집기 (emacs와 같은) 용 텍스트에 색상을 지정 하시겠습니까?

분류에서Dev

수식에서 파생 된 다른 셀 텍스트를 기반으로 Excel에서 셀 강조 표시

분류에서Dev

삽입 된 동영상이 특정 위치에 도달하면 자바 스크립트로 텍스트 강조

분류에서Dev

텍스트 크기 및 글꼴 색상에 대한 CSS 조정

분류에서Dev

편집기에서 Ruby 메서드 및 메서드 매개 변수를 다른 색상으로 강조 표시

분류에서Dev

C # Windows 응용 프로그램에서 datagridview 셀 내부의 특정 텍스트를 강조 표시합니다.

분류에서Dev

부트 스트랩 : 수정 된 입력 텍스트 강조?

분류에서Dev

MS 워드 매크로 : 선택한 텍스트 내에서 특정 색상에서 다른 색상으로 강조 표시를 변경하는 방법은 무엇입니까?

분류에서Dev

클래스를 사용하여 Swift3에서 버튼 및 강조 표시된 상태 사용자 지정

분류에서Dev

탐색 및 상태 표시 줄 텍스트 색상 설정

분류에서Dev

Linux는 특정 날짜 및 시간 스탬프를 기반으로 텍스트 파일에서 특정 단어가 나오는 행 수를 계산합니다.

분류에서Dev

Word 2016에서 녹색으로 강조 표시된 텍스트

분류에서Dev

강조 표시된 텍스트를 Git 커밋으로 보내는 Vim 함수

분류에서Dev

특정 텍스트가 포함 된 표 찾기

분류에서Dev

동시에 HTML로 텍스트 삭제 및 강조 표시

분류에서Dev

강조 표시된 상태에 대한 범례 및 정보 추가

분류에서Dev

ADDRESS () 반환 값을 기반으로 특정 셀을 강조 표시합니다.

Related 관련 기사

  1. 1

    특정 패턴이 강조 표시된 터미널에서 텍스트보기

  2. 2

    특정 패턴이 강조 표시된 터미널에서 텍스트보기

  3. 3

    강조 표시된 텍스트를 주석에 자동으로 복사하도록 Okular 강조 표시 수정

  4. 4

    HTML 텍스트 내에서 특정 텍스트를 검색하고 검색 문자열을 색상으로 강조 표시하는 방법

  5. 5

    텍스트 상자에서 특정 텍스트를 강조 표시 할 수있는 방법이 있습니까?

  6. 6

    사용자 지정 어댑터 목록보기에서 검색된 텍스트 강조 표시

  7. 7

    mySQL 쿼리로 특정 텍스트 및 난수 찾기 및 바꾸기

  8. 8

    특정 표 셀의 내용 가져 오기 및 텍스트 색상 변경

  9. 9

    HTML 원시 텍스트에서 특정 텍스트 강조

  10. 10

    창 크기 조정 및 텍스트가 두 줄에 표시 될 때 <li>에서 텍스트의 세로 정렬

  11. 11

    텍스트에서 특정 단어를 강조 표시

  12. 12

    Seurat DimPlot-다양한 색상으로 특정 셀 그룹 강조 표시

  13. 13

    미리 정의 된 조건을 기반으로 텍스트 편집기 (emacs와 같은) 용 텍스트에 색상을 지정 하시겠습니까?

  14. 14

    수식에서 파생 된 다른 셀 텍스트를 기반으로 Excel에서 셀 강조 표시

  15. 15

    삽입 된 동영상이 특정 위치에 도달하면 자바 스크립트로 텍스트 강조

  16. 16

    텍스트 크기 및 글꼴 색상에 대한 CSS 조정

  17. 17

    편집기에서 Ruby 메서드 및 메서드 매개 변수를 다른 색상으로 강조 표시

  18. 18

    C # Windows 응용 프로그램에서 datagridview 셀 내부의 특정 텍스트를 강조 표시합니다.

  19. 19

    부트 스트랩 : 수정 된 입력 텍스트 강조?

  20. 20

    MS 워드 매크로 : 선택한 텍스트 내에서 특정 색상에서 다른 색상으로 강조 표시를 변경하는 방법은 무엇입니까?

  21. 21

    클래스를 사용하여 Swift3에서 버튼 및 강조 표시된 상태 사용자 지정

  22. 22

    탐색 및 상태 표시 줄 텍스트 색상 설정

  23. 23

    Linux는 특정 날짜 및 시간 스탬프를 기반으로 텍스트 파일에서 특정 단어가 나오는 행 수를 계산합니다.

  24. 24

    Word 2016에서 녹색으로 강조 표시된 텍스트

  25. 25

    강조 표시된 텍스트를 Git 커밋으로 보내는 Vim 함수

  26. 26

    특정 텍스트가 포함 된 표 찾기

  27. 27

    동시에 HTML로 텍스트 삭제 및 강조 표시

  28. 28

    강조 표시된 상태에 대한 범례 및 정보 추가

  29. 29

    ADDRESS () 반환 값을 기반으로 특정 셀을 강조 표시합니다.

뜨겁다태그

보관