View Single Post
 
Old 04-30-2018, 01:24 AM
NevilleT NevilleT is offline Windows 7 64bit Office 2003
Novice
 
Join Date: Mar 2015
Posts: 29
NevilleT is on a distinguished road
Default Table of Contents causes error when checking style

I have a macro that loops through each paragraph in a document and finds a particular style. It then takes that text, and puts it in an array. So far so good. Where I came unstuck is with a table of contents which has no style. It causes an error.

I have trimmed down the function as it is much more complex than the one below, but hopefully this will provide the basis to understand the problem.

How do I cater for hitting a ToC with no style when looping through the document?

Public Function funGetHeadingFromStyle(ByVal strStyleToFind As String) As String
Dim rngCurrentRange As Range
Dim blnWholeDocumentSearched As Boolean
Dim blnHeadingFound As Boolean
Dim intHeadersFound
Dim strTest As String

'---------------------------------------------------------------
' Initialise the variables
Set rngCurrentRange = Selection.Range
blnWholeDocumentSearched = False
blnHeadingFound = False
intHeadersFound = 0

Do Until blnWholeDocumentSearched ' Loop until you reach the end of the document

If rngCurrentRange.Style = strStyleToFind Then ' Found a heading

strTest = Trim(rngCurrentRange.Text)
strTest = Left(strTest, Len(strTest) - 1) ' Remove paragraph mark

' Add a comma if it is not the first header
If intHeadersFound > 0 Then
funGetHeadingFromStyle = funGetHeadingFromStyle & ", "
End If

' Store the header text
funGetHeadingFromStyle = funGetHeadingFromStyle & strTest

' Update the counter - number of headers found
intHeadersFound = intHeadersFound + 1 ' Number of records found
End If

Set rngCurrentRange = rngCurrentRange.Next(wdParagraph, 1) ' Select the next paragraph

blnWholeDocumentSearched = ActiveDocument.Range(0, rngCurrentRange.Paragraphs(1).Range.End).Paragraph s.Count = 0 ' End of the document
Loop

End Function
Reply With Quote