Из-за ограничений в объектной модели Word я думаю, что лучший способ добиться этого - временно удалить код поля оглавления, выполнить итерацию по документу Word, а затем повторно вставить оглавление. В VBA это будет выглядеть так:
Dim doc As Document
Dim fld As Field
Dim rng As Range
Set doc = ActiveDocument
For Each fld In doc.Fields
If fld.Type = wdFieldTOC Then
fld.Select
Selection.Collapse
Set rng = Selection.Range 'capture place to re-insert TOC later
fld.Cut
End If
Next
Итерация по коду для извлечения абзацев, а затем
Selection.Range = rng
Selection.Paste
Если вы кодируете в .NET, это должно выглядеть довольно близко. Кроме того, это должно работать для Word 2003 и более ранних версий как есть, но для Word 2007/2010 оглавление, в зависимости от того, как оно создается, иногда имеет область, подобную Контент-контролю, которая может потребовать от вас написания дополнительного кода обнаружения и удаления. .