下面的宏應該拉每個句子的平均單詞,然後在所有句子中將文本變成紅色,所有句子中> = 150%。Word 2010 VBA每個句子對自己的單詞錯誤計數
問題是,它變成一些更短的句子紅色,以及。例如,它爲這些句子着色(編輯補充:在源文檔中,150%的平均長度是35個字):
31個字:FSAIPs爲評估監管實施的充分性提供了基礎基於此假定的操作過程進行設計,並支持準備預期劑量評估。
29的話:(按照10 CFR 835.2,等效劑量率標準適用於從輻射源30cm或30釐米從任何表面的輻射穿透。)
(我分享更多例如,但這是一個關於聯邦核項目的輻射控制程序,所以我必須仔細選擇。)
上述語句的這些字數來自窗口底部的狀態欄。所以Word似乎根據Word的哪個部分正在計算的數字來計算不同的字數。我認爲。
對於如何使計數更準確,或者至少在兩種情況下都一樣,有什麼建議嗎?哦,還有最後一點:它不包括可見的刪除單詞。在某些情況下,它可能會計算諸如不中斷連字符之類的東西,而不是上面分享的那些。
Sub Mark_Long()
'''''''''''''''''''
' Adapted from "Allen Wyatt's Word Tips, wordribbon.tips.net.
' I added to it so it pulls the avg sentence length from
' the readability stats, and only marks the sentences that are 150%
' of the average.
''''''''''''''''''''
Dim iMyCount As Integer
Dim iWords As Integer
Dim bTrackingAsWas As Boolean
If Not ActiveDocument.Saved Then
ActiveDocument.Save
End If
Set myRange = ActiveDocument.Content
wordval = myRange.ReadabilityStatistics(6).Value
bTrackingAsWas = ActiveDocument.TrackRevisions
'Turn off tracked changes
ActiveDocument.TrackRevisions = False
'Reset counter
iMyCount = 0
'Set number of words
iWords = (wordval * 1.5)
For Each MySent In ActiveDocument.Sentences
If MySent.Words.Count > iWords Then
MySent.Font.Color = wdColorRed
iMyCount = iMyCount + 1
End If
Next
'Restore tracked changes
ActiveDocument.TrackRevisions = bTrackingAsWas
'Report results
MsgBox iMyCount & " sentences longer than " & _
iWords & " words."
End Sub
我只是花了一些時間,試圖重現他的問題。確實,在Word GUI中,VBA字數與Word字數存在差異。大多數情況下,它添加一個字,但是一些情況下,它似乎有一些情況下它差不多5個。尚未找到一個解釋至今 – Matt 2014-11-07 03:29:45