본문 바로가기
💻 IT/워드, 엑셀 VBA 매크로

[MS 워드 VBA 매크로] 찾기 & 바꾸기 기능 속성

by The Raven 2022. 11. 4.
728x90

MS 워드에서 찾기 및 바꾸기는 매우 흔하게 사용하는 기능입니다.

이 기능을 VBA 매크로로 표현하면 아래와 같습니다. 

아래의 코드에서 사용자가 코드를 통해 에서 직접 설정할 수 있는 속성 값에 대해 정리해 보았습니다.

(모든 속성을 다 적진 않았고 흔히 쓰는 속성 위주로 정리했습니다.)

Sub Find_Replace()

    Selection.Find.ClearFormatting
    With Selection.Find.Font
    	.Size = 10
        .Bold = True
    End With
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
    	.text = "A"
        .Replacement.text = "a"
        .Forward = True
        .Wrap = wdFindContiune
        .Format = False
        .MatchCast = False
        .MatchWholeWord = False
        .MatchByte = False
        .CorrectHangulEndings = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False        
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    
End Sub

Selection.Find.ClearFormatting

'찾을 내용(N)'란에 있는 내용을 지웁니다.

With Selection.Find.Font ~ End With

'찾을 내용'란에 특정 서식을 지정합니다. 글자 크기, 글꼴 등을 지정할 수 있습니다. 

Selection.Find.Replacement.ClearFormatting

'바꿀 내용(I)'란에 있는 내용을 지웁니다.

With Selection.Find ~ End With

검색 옵션은 Selection.Find 내의 속성값을 통해 지정가능합니다. 아래의 속성들을 참고

.text = " a"

'찾을 내용(N)'란에 들어갈 내용을 지정합니다. 위의 예에선 a를 찾습니다.

.Replacement = " A"

'바꿀 내용(I)'란에 들어갈 내용을 지정합니다. 위의 예에선 A로 바꿉니다. 쌍따옴표 안에 아무 것도 안 쓰고 ""로 지정하면 찾은 내용을 삭제하는 효과가 납니다.

.Forward = True

'찾기'를 수행할 방향을 지정합니다. True이면 위에서 아래로 찾기를 수행하고, False이면 반대로 아래에서 위로 찾기를 수행합니다.

.Warp = wdFindContinue

선택한 영역에 대해 찾기(바꾸기)를 완료했을 때 그 다음 어떻게 작동할지 지정하는 속성입니다. 아래의 WdFindWrap enum 값중에 하나를 지정할 수 있습니다.

  • wdFindAsk (2) : 선택 영역에 대한 검색을 마친 후, 문서의 나머지 부분에 대해서도 검색할지 물어보는 메시지를 띄웁니다.
  • wdFindContinue (1) : 검색 범위의 처음이나 끝에 도달했을 때, 찾기를 계속 수행합니다.
  • wdFindStop (0) : 검색 범위의 처음이나 끝에 도달했을 때, 찾기를 멈춥니다.

.Format = True

'찾을 내용'에서 특정 서식을 지정할지는 설정하는 속성입니다. 이 항목이 False로 되어 있으면, Selection.Find.Font을 지정해도 작동하지 않습니다.

.MatchCast = False

대/소문자 구분 여부를 지정합니다.

.MatchWholeWord = False

단어 단위로 검색할지 지정합니다.

.MatchByte = False

검색 시 전자(full-width - 주로 한글, 한자 등이 해당)와 반자(half-width - 알파벳, 숫자, 기호 등이 해당)를 구분할지 지정합니다. 

.CorrectHangulEndings = False

조사 자동 바꾸기 수행 여부를 지정합니다.

.MatchWildcards = False

패턴 일치(와일드 카드)를 사용할지 지정합니다. 패턴 (와일드 카드)는 매우 유용하게 사용할 수 있는 기능이나 나중에 따로 다뤄볼까 합니다. 

.MatchSoundsLike = False

동음어 찾기(영어에만 해당) 여부를 지정합니다.

.MatchAllWordForms = False        

모든 단어 형태 찾기(영어에만 해당) 여부를 지정합니다.

Selection.Find.Execute Replace:=wdReplaceAll

Selection.Find 안에서 지정된 속성을 가지고 선택 영역(또는 문서 전체)에 대해서 찾기 & 바꾸기를 수행합니다. 아래의 WdReplace Enum 값 중에 하나를 지정할 수 있습니다. 

  • wdReplaceAll (2) : 모든 찾기 결과에 대해 바꾸기 수행.
  • wdReplaceNone (0) : 찾기만 수행하고 바꾸기는 하지 않음.
  • wdReplaceOne (1) : 제일 처음 검색된 내용만 바꾸기를 수행함.

이 포스트에서는 찾기, 바꾸기 기능의 기본적인 속성을 정리했습니다.

위의 VB 코드를 활용하면 특정 문자 또는 패턴을 찾았을 때 사용자가 지정한 동작을 하도록 만들 수 있습니다. 

728x90
반응형

댓글