I needed to determine the word count for a Microsoft Word document, omitting all the section titles in the document. I brewed up a little VBA code to do the trick. This was built in Word 2010, but will probably work in the newer versions.
' (C) 2013 SpringLight, http://www.springlight.com
' You may use this code in any project you wish as long as you leave the copyright notice in place.
Dim WordCountWhole As Long
Dim WordCountTitles As Long
Dim Titles As String
Dim Msg As String
Application.ScreenUpdating = False
WordCountWhole = ActiveDocument.ComputeStatistics(wdStatisticWords, False)
Selection.Find.Style = ActiveDocument.Styles("Heading 1")
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
Titles = Titles & Selection.Text
WordCountTitles = WordCountTitles + Selection.Range.ComputeStatistics(wdStatisticWords)
Application.ScreenUpdating = True
Msg = "Total Word Count: " & WordCountWhole
Msg = Msg & vbCrLf
Msg = Msg & "Heading1 Word Count: " & WordCountTitles
Msg = Msg & vbCrLf
Msg = Msg & "Text Word Count: " & (WordCountWhole - WordCountTitles)
In my document the titles are all in the “Heading 1” style, so that’s what this code searches for. If your titles are done in another style, or if your titles are done in multiple styles, you can change one line of code to get the desired result:
Selection.Find.Style = ActiveDocument.Styles(“Heading 1”)
I attached this code to a new button that I placed on the Ribbon, so at the touch of the button the word count is performed. I recommend that.
The code at the end dumps all the titles into the Immediate window in the Visual Basic Editor, which you can copy-and-paste into a new Word document to verify the count, if you wish.