Когда вы добавляете заголовок к плавающему объекту, он добавляется в текстовое поле и создается с использованием полей SEQ и / или STYLEREF (это зависит от настроек).
Текстовые поля находятся не в текстовом слое документа, поэтому не сразу видно, как Word их упорядочивает. Насколько я знаю, Word смотрит на то, где закреплено текстовое поле (вы можете нажать кнопку "Показать", чтобы увидеть привязки), и использует привязки для определения последовательности.
Но другая проблема заключается в том, что когда вы выбираете "Весь документ", например, используя ctrl-A, и нажимаете F9, чтобы обновить поля в документе, текстовые поля не включаются, поэтому их поля не обновляются.
Таким образом, если вы вставите 2 фигуры, то измените их расположение любым способом, в результате чего якорь текстового поля второго рисунка переместится выше (т. Е. Ранее в документе) якоря текстового поля первого рисунка, типичный «выбрать документ, обновить поля ссылок, обновить ToC "последовательность не сработает.
Я думаю, что следующий VBA может использоваться для исправления всех текстовых полей в теле документа (в отличие от текстовых полей в других сюжетах, таких как верхний / нижний колонтитул, но я не думаю, что они могут иметь такой ссылочный номер в любом случае)).
Sub updateFigureRefs()
Dim rng As Range
Set rng = ActiveDocument.StoryRanges(wdTextFrameStory)
While Not (rng Is Nothing)
rng.Fields.Update
Set rng = rng.NextStoryRange
Wend
Set rng = Nothing
End Sub
Это фактически обновит все поля в текстовых полях, например, ссылки на таблицы. и все остальное.