매크로에서 문장의 시작 감지 (Microsoft Word)
Shelley는 “provided that”( “Provided That”, “PROVIDED That”등)의 모든 대문자 순열을 변경하는 매크로를 개발하고 있습니다.
소문자로. 쉽게 할 수 있지만 구절이 문장으로 시작하는 경우 “P”는 대문자 여야합니다. Shelley는 “provided that”과 같은 문구가 문장의 시작 부분에 있는지 여부를 매크로에 알 수있는 방법이 있는지 궁금합니다.
이것에 대해 몇 가지 방법이 있습니다. 첫째, 찾기 및 바꾸기를 사용하여 연속적인 검색 및 바꾸기를 수행 할 수 있습니다. 매크로는 다음을 수행 할 수 있습니다.
-
“provided that”의 모든 변형을 소문자로 변경합니다.
-
“. provided that”(마침표, 공백, “provided that”)을 검색하여 “. Provided that”(적절한 대문자 사용)으로 바꿉니다.
-
느낌표, 물음표와 같은 다른 문장 끝 구두점 또는 인용 부호 뒤에 오는 구두점을 사용하여 검색을 반복하고 2 단계에서 바꿉니다.
이것은 매크로에서 수행되기 때문에 프로세스가 매우 빠르게 진행되어야합니다.
다음은 작업을 수행 할 수있는 예입니다.
Sub ChangeCase1() Dim vFindText As Variant Dim vReplaceText As Variant Dim orng As Range Dim i As Long vFindText = Array(". provided that", _ "! provided that", _ "? provided that", _ "."" provided that", _ "!"" provided that", _ "?"" provided that") vReplaceText = Array(". Provided that", _ "! Provided that", _ "? Provided that", _ "."" Provided that", _ "!"" Provided that", _ "?"" Provided that") ' Set all occurrences to lowercase Set orng = ActiveDocument.Range With orng.Find .ClearFormatting .Replacement.ClearFormatting Do While .Execute(FindText:="provided that", _ Forward:=True, _ Wrap:=wdFindStop) = True orng.Select orng = "provided that" orng.Collapse wdCollapseEnd Loop End With ' Account for end-of-sentence For i = 0 To UBound(vFindText) Set orng = ActiveDocument.Range With orng.Find .ClearFormatting .Replacement.ClearFormatting Do While .Execute(FindText:=vFindText(i), _ MatchCase:=True, _ Forward:=True, _ Wrap:=wdFindStop) = True orng.Select orng = vReplaceText(i) orng.Collapse wdCollapseEnd Loop End With Next End Sub
이 접근 방식의 한 가지 단점은 단락 시작 부분에서 발생하는 “제공된”을 허용하지 않는다는 것입니다. 이러한 인스턴스를 고려하도록 매크로를 수정할 수 있지만 더 복잡합니다.
그러나 사용할 수있는 다른 접근 방식이 있습니다. 이것은 Case 속성에 대한 다소 난해한 설정 인 wdTitleSentence에 의존합니다. 이 설정은 모든 문자 (한 가지 주목할만한 예외 포함)를 소문자로 변경하고 구문이 문장의 시작 부분에 있으면 첫 번째 문자를 대문자로 변경합니다. 매크로에서 사용하는 방법은 다음과 같습니다.
Sub ChangeCase2() With Selection.Find .ClearFormatting .Wrap = wdFindContinue .Forward = True .Format = True .MatchCase = False .MatchWildcards = False .Text = "provided that" .Execute While .Found Selection.Range.Case = wdLowerCase Selection.Range.Case = wdTitleSentence Selection.Collapse Direction:=wdCollapseEnd .Execute Wend End With End Sub
While 루프에는 Case 속성에 두 가지 할당이 있습니다. 첫 번째는 선택 (발견 된 내용)을 소문자로 설정하고 두 번째는 문장의 제목 케이스로 설정합니다. 소문자 설정은 “하나의 주목할만한 예외”를 처리하기 위해 특별히 만들어졌습니다.
내가 언급했듯이 “PROVIDED that”텍스트가 문장의 시작 부분에있는 경우 wdTitleSentence 설정은 어떤 이유로 “제공됨”으로 변경되지 않습니다. 그러나 “provided that”( “PROVIDED that”은 소문자로 설정 한 후 표시됨)을 “Provided that”로 문제없이 변경합니다.
_ 참고 : _
이 페이지 (또는 WordTips 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.
link : / wordribbon-WordTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요]
.
_WordTips_는 비용 효율적인 Microsoft Word 교육을위한 소스입니다.
(Microsoft Word는 세계에서 가장 인기있는 워드 프로세싱 소프트웨어입니다.)이 팁 (13398)은 Microsoft Word 2007, 2010 및 2013에 적용됩니다.