Scott은 문서에있는 모든 문자의 “빈도 수”를 얻을 수있는 방법을 찾고 있습니다. 그는 각 문자 (ASCII 코드 9에서 255까지)가 몇 번 발생하는지 알고 싶습니다. 찾기 및 바꾸기를 사용하여 개별 문자의 수를 결정할 수 있지만 (간단히 문제의 문자를 검색 한 다음 자체로 대체) 이러한 접근 방식은 247에 대해 수행해야하는 경우 지루할 것입니다. 원하는 정보를 얻기 위해 다른 문자 코드.

이러한 작업은 매크로로 수행해야하지만 접근하는 방법에는 여러 가지가 있습니다. 한 가지 방법은 Character 컬렉션의 각 구성원을 단계별로 살펴보고 각각을 검사하고 해당 문자를 여러 카운터 중 하나에 할당하는 빠른 매크로를 작성하는 것입니다.

Sub CountChars1()

Dim iCount(0 To 255) As Integer     Dim i As Integer     Dim vCharacter As Variant     Dim sTemp As String

' Initialize the array     For i = 0 To 255         iCount(i) = 0     Next i

' Fill the array     For Each oCharacter In ActiveDocument.Characters        i = Asc(oCharacter)

iCount(i) = iCount(i) + 1     Next

' Add document for results     Documents.Add     Selection.TypeText Text:="ASCII Character Count" & vbCrLf

' Only output codes 9 through 255     For i = 9 To 255         sTemp = Chr(i)

If i < 32 Then sTemp = Trim(Str(i))

sTemp = sTemp & Chr(9) & Trim(Str(iCount(i)))

sTemp = sTemp & vbCrLf         Selection.TypeText Text:=sTemp     Next i End Sub

매크로는 iCount 배열을 사용하여 각 문자 코드의 개수를 누적 한 다음 결과를 출력하기 위해 새 문서를 만듭니다. (결과 문서는 원하는 방식으로 서식을 지정할 수 있습니다.)

이 방법은 비교적 짧은 문서 (최대 몇 페이지)에 적합합니다. 문서가 길어지면 매크로가 느려집니다. 왜?

어떤 이유로 Characters 컬렉션을 사용하는 데 많은 시간이 걸리기 때문입니다. 문서에 대해 매크로가 너무 느리게 실행되면 문자열로만 작동하도록 약간 변경하는 것이 좋습니다.

Sub CountChars2()

Dim iCount(0 To 255) As Long     Dim i As Long     Dim j as integer     Dim lCharCount As Long     Dim sDoc As String     Dim sTemp As String

' Initialize the array     For i = 0 To 255         iCount(i) = 0     Next i

' Assign document to a huge string     lCharCount = ActiveDocument.Characters.Count     sDoc = ActiveDocument.Range(0, lCharCount)



' Fill the array     For i = 1 to Len(sDoc)

j = Asc(Mid(sDoc, i, 1))

iCount(j) = iCount(j) + 1     Next

' Add document for results     Documents.Add     Selection.TypeText Text:="ASCII Character Count" & vbCrLf

' Only output codes 9 through 255     For i = 9 To 255         sTemp = Chr(i)

If i < 32 Then sTemp = Trim(Str(i))

sTemp = sTemp & Chr(9) & Trim(Str(iCount(i)))

sTemp = sTemp & vbCrLf         Selection.TypeText Text:=sTemp     Next i End Sub

이 매크로 버전은 전체 문서를 단일 문자열 인 sDoc으로 채 웁니다. 이 문자열은 매크로에 의해 매우 빠르게 처리 될 수 있습니다. (635 페이지 문서는 내 시스템에서 처리하는 데 약 30 초 밖에 걸리지 않습니다.)이 버전은 더 긴 문서에서 작동하도록 만들어 졌기 때문에 일부 변수 유형이 더 많은 수의 가능성을 반영하도록 변경되었습니다.

_ 참고 : _

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

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

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

(Microsoft Word는 세계에서 가장 널리 사용되는 워드 프로세싱 소프트웨어입니다.)이 팁 (411)은 Microsoft Word 97, 2000, 2002 및 2003에 적용됩니다. Word의 리본 인터페이스에 대한이 팁 버전 (Word 2007)을 찾을 수 있습니다. 이후) 여기 :

link : / wordribbon-Character_Frequency_Count [문자 빈도 수].