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 코드를 활용하면 특정 문자 또는 패턴을 찾았을 때 사용자가 지정한 동작을 하도록 만들 수 있습니다.
'💻 IT > 워드, 엑셀 VBA 매크로' 카테고리의 다른 글
[엑셀] 율리우스력과 고레고리력의 오차 계산하기 (0) | 2024.05.15 |
---|---|
[MS 워드 VBA 매크로] 그림 크기 조절하기 (0) | 2024.05.10 |
[MS 워드 VBA 매크로] 새 문서 열기, 클립보드 내용 붙이기, 문서 저장 (0) | 2020.12.13 |
[MS 워드 VBA 매크로] 커서 이동 (Selection.Move) (0) | 2020.11.14 |
댓글