Mary는 문서에 텍스트를 추가하기 위해 매크로를 꽤 많이 사용합니다. 문제는 추가 된 텍스트에 아포스트로피가 포함되어있는 경우 “스마트”가 아닌 “직선”으로 텍스트에 추가된다는 것입니다. 그녀는 Word에서 곧은 따옴표 대신 스마트 따옴표를 사용하도록 지시하는 자동 서식 설정이 제자리에 있지만 매크로가 삽입 한 텍스트에는 영향을 미치지 않음을 나타냅니다.

입력하는 대신 매크로를 사용하여 문서에 텍스트를 삽입하면 각 경우의 텍스트가 Word에서 다르게 처리됩니다. 입력 한 텍스트는 각 문자가 입력 될 때 처리됩니다. 매크로로 삽입 된 텍스트는 문서에 붙여 넣은 텍스트와 비슷하게 처리됩니다. 따라서 “this is my text”를 입력하면 Word는 각 문자마다 처리를 수행합니다. 즉, 프로그램이 자동 서식 및 자동 고침을 확인하고 Word에서 텍스트를 처리하기 위해 수행하는 모든 작업을 확인할 시간이 있습니다.

매크로를 사용하여 동일한 텍스트를 입력하면 마치 제자리에 붙여 넣은 것처럼 블록으로 삽입됩니다. 즉, 자동 서식 지정에 의해 처리 된 텍스트 중간에있는 문자 (예 : 따옴표 또는 아포스트로피)는 “포착”되지 않고 처리됩니다. 이는 곧은 따옴표가 매크로에 의해 삽입 된 텍스트에 포함 된 경우 스마트 따옴표로 변경되지 않음을 의미합니다.

이에 대한 해결책에 접근 할 수있는 몇 가지 방법이 있습니다. 첫 번째는 매크로가 모든 텍스트를 삽입 한 후 찾기 및 바꾸기 작업을 수행하여 모든 따옴표를 따옴표로, 아포스트로피를 아포스트로피로 바꾸는 것입니다. 이상하게 들릴 수 있지만 입력 할 때 자동 서식이 스마트 따옴표를 사용하도록 설정되어 있으면 찾기 및 바꾸기 작업이 곧은 따옴표를 스마트 따옴표로 변경하게됩니다.

이 방법은 매크로가 문서에 많은 텍스트를 삽입 한 경우 사용할 수있는 방법입니다. 더 작은 텍스트 청크를 삽입하는 경우 매크로가 스마트 따옴표로 시작할 올바른 ASCII 코드를 삽입하는지 확인하는 것이 더 쉽습니다. 일반 따옴표에 대한 ASCII 코드는 34이지만 스마트 여는 따옴표의 코드는 147이고 닫는 따옴표는 148입니다. 아포스트로피에 사용되는 코드에는 비슷한 차이가 있습니다. Chr 함수를 사용하여 적절한 문자를 삽입하면 항상 원하는 따옴표가 있습니다.

이를 수행하는 한 가지 방법은 매크로 시작 부분에 다음과 유사한 코드를 사용하는 것입니다.

If Options.AutoFormatAsYouTypeReplaceQuotes = True Then     sAposOpen = Chr(145)

sAposClose = Chr(146)

sQuoteOpen = Chr(147)

sQuoteClose = Chr(148)

Else     sAposOpen = Chr(39)

sAposClose = Chr(39)

sQuoteOpen = Chr(34)

sQuoteClose = Chr(34)

End If

이 코드는 입력 할 때 자동 서식 설정이 둥근 따옴표에 대해 켜져 있는지 확인합니다. 그렇다면 네 개의 변수는 스마트 따옴표에 대한 적절한 ASCII 코드로 설정됩니다. 켜져 있지 않으면 변수는 곧은 따옴표에 대한 적절한 코드로 설정됩니다. 그런 다음 나중에 텍스트를 조합하고 삽입 할 때 매크로에서 이러한 변수를 사용할 수 있습니다.

예를 들어 “my brother ‘s house is down the street”라는 텍스트를 삽입하려면 다음과 같이 삽입 할 수 있습니다.

sMyString = "my brother" & sAposClose & "s house is down the street"

Selection.InsertAfter " " & sMyString

이 접근 방식이 귀찮다면 (이 방식으로 문자열을 분리하는) 다른 옵션이 하나 있습니다. 한 번에 문자열에서 적절한 대체를 수행하는 고유 한 함수를 만들 수 있습니다.

다음 매크로는 작업을 잘 수행합니다.

Function RepQuotes(sRaw As String) As String     Dim sTemp As String     Dim sAposOpen As String     Dim sAposClose As String     Dim sQuoteOpen As String     Dim sQuoteClose As String

If Options.AutoFormatAsYouTypeReplaceQuotes = True Then         sAposOpen = Chr(145)

sAposClose = Chr(146)

sQuoteOpen = Chr(147)

sQuoteClose = Chr(148)

Else         sAposOpen = Chr(39)

sAposClose = Chr(39)

sQuoteOpen = Chr(34)

sQuoteClose = Chr(34)

End If

sTemp = Replace(sRaw, " " & Chr(39), sAposOpen)

sTemp = Replace(sTemp, Chr(39), sAposClose)

sTemp = Replace(sTemp, " " & Chr(34), sQuoteOpen)

sTemp = Replace(sTemp, Chr(34), sQuoteClose)

RepQuotes = sTemp End Function

당신이하는 일은 당신의 텍스트 문자열을 정상적으로 생성 한 다음 RepQuotes 매크로를 통해 전달하는 것입니다. 매크로는 사용할 적절한 따옴표를 결정한 다음 변환을 수행합니다. 따옴표 앞에 공백이 있는지 여부에 따라 따옴표가 텍스트에서 시작 따옴표인지 끝 따옴표인지 여부를 결정합니다. 있는 경우 시작 인용문으로 간주됩니다. 그렇지 않은 경우 닫는 따옴표입니다.

_ 참고 : _

이 페이지 (또는 WordTips 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.

link : / wordribbon-WordTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요].

_WordTips_는 비용 효율적인 Microsoft Word 교육을위한 소스입니다.

(Microsoft Word는 세계에서 가장 널리 사용되는 워드 프로세싱 소프트웨어입니다.)이 팁 (11833)은 Microsoft Word 2007, 2010, 2013 및 2016에 적용됩니다. 여기에서 Word의 이전 메뉴 인터페이스에 대한이 팁의 버전을 찾을 수 있습니다.

link : / word-Adding_Smart_Quotes_through_Macro_Text [매크로 텍스트를 통해 스마트 따옴표 추가].