2016-09-19 2 views
0

Ich erhalte regelmäßig lange Dokumente, die Fußnoten enthalten und versuche, einen Weg zu finden, mit VBA die Anzahl der Wörter auf jeder Seite einschließlich Fußnoten zu zählen. Es spielt keine Rolle, ob eine Fußnote auf die nächste Seite übergeht, ich zähle nur die Wortzählung mit Fußnoten, die auf der Seite verankert sind.Zählen von Wörtern in Word-Dokument, einschließlich Fußnoten

Ich habe ein Makro, das korrekt die Anzahl der Worte im Körper des Textes zählt, mit dem Befehl:

WordCount = ActiveDocument.Range(Start:=pos1, End:=pos2).ComputeStatistics(wdStatisticWords) 

Die Variablen Pos1 und pos2 hat zu den ersten und letzten Zeichen der Seite gesetzt worden gezählt werden.

Allerdings, wenn ich fügen Sie den Parameter True zu Compute (wdStatisticWords, True), zu IncludeFootnotesAndEndnotes, wie in:

WordCount = ActiveDocument.Range(Start:=pos1, End:=pos2).ComputeStatistics(wdStatisticWords, True) 

es nicht funktioniert, einen Fehler zu geben, dass es zu viele Parameter sind. Es scheint, dass bei Verwendung eines Bereichs der Parameter IncludeFootnotesAndEndnotes nicht verfügbar ist.

Wie zählen Sie die Wörter in Fußnoten in einem Bereich?

Antwort

0

Ich denke, was Sie tun müssen, ist in jedem der StoryRanges iterieren und einen Zähler aktualisieren. Hier ein kleines Beispiel, die als Beispiel dienen sollte, aber Sie werden wahrscheinlich brauchen sie für Ihren speziellen Fall zwicken (meine Anmerkung über die Enum für Storyrange Bewertung)

Hier ist der Code:

Public Sub Count_All_Words() 
    Dim Story_Ranges   As Variant: Set Story_Ranges = ActiveDocument.StoryRanges 
    Dim Story_Range   As Object 
    Dim WordCount   As Long 

    'Loop through each story range and only include the footer and Main story to the word count 
    For Each Story_Range In Story_Ranges 
     'You may need to check additional types, lookup the enumerations for StoryType here: 
     'https://msdn.microsoft.com/en-us/library/bb238219(v=office.12).aspx 
     If Story_Range.StoryType = wdMainTextStory Or Story_Range.StoryType = wdFootnoteSeparatorStory Then 
      'Add to the word count 
      WordCount = WordCount + Story_Range.ComputeStatistics(wdStatisticWords) 
     End If 
    Next 

    Debug.Print "The word count is: " & WordCount 
End Sub 
Verwandte Themen