按文档样式计算 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
类似于 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