Ответ: Борьба с таблицами
Если материал (Story) состоит из нескольких связанных фреймов, то скрипт обрабатывает этот материал столько раз, из скольких фреймов он состоит. Соответсвенно, и каждую таблицу обрабатывает многократно. А это производительности не добавляет.
Чтобы обработка была однократной, нужно исправить две подпрограммки:
Private Sub PerformActiveDoc() ' обработка активного документа
Set myItems = myInD.ActiveDocument.Stories
itemCount = myItems.Count
If itemCount > 0 Then
For i = 1 To itemCount
Set curStory = myItems.Item(i)
Call PerformStory(curStory) ' для всех Story
Next
End If
End Sub
Private Sub PerformStory(curStory) ' обработка Story
If curStory.Paragraphs.Count > 0 Then
If ExistTable(curStory) Then ' если в Story есть хоть одна таблица
For i = 1 To curStory.Paragraphs.Count
Set curPara = curStory.Paragraphs.Item(i)
Call PerformPara(curPara) ' для всех параграфов в Story
Next
End If
End If
End Sub