按文档样式计算 Microsoft Word 文档中的字数?

Count words in a Microsoft Word document by document style?

类似于 this question,我想编写一个 VBA 脚本来计算以特定文档样式格式化的单词,更准确地说:特定段落样式。

Sub CountTypeface()
    Dim lngWord As Long
    Dim lngCountIt As Long
    Const Typeface As String = "Calibri"
    Const MyFormat As String = "My Paragraph Style"
    'Ignore any document "Words" that aren't real words (CR, LF etc)
    For lngWord = 1 To ActiveDocument.Words.Count
        If Len(Trim(ActiveDocument.Words(lngWord))) > 1 Then
            If ActiveDocument.Styles(lngWord) = MyFormat Then
                lngCountIt = lngCountIt + 1
            End If
        End If
    Next lngWord

    MsgBox "Number of " & Typeface & " words: " & lngCountIt
End Sub

但是 运行 此代码导致运行时错误: 运行时错误“5941”:请求的集合成员不存在

为什么会发生这种情况以及如何解决?

您正在使用字数统计迭代器作为 style 集合的索引。您的单词数超过 Styles 的索引数,并且 If 只会出现一次,因为您没有检查单词的样式。

替换:

If ActiveDocument.Styles(lngWord) = MyFormat Then

与:

If ActiveDocument.Words(lngWord).Style = MyFormat Then