Я пытаюсь создать собственную панель навигации с широким полем слева от моего документа.Это немного похоже на оглавление, но использование форм вместо текстовых ссылок для визуальной привлекательности.
Мой код до сих пор копирует и вставляет фигуру, изменяет ее текст и назначает ему гиперссылку на соответствующую закладку в документе.Это делается путем поиска каждого стиля заголовка 1 в документе и записи его диапазона и номера страницы в двух массивах.
Я хочу, чтобы эти фигуры появлялись на каждой странице в том же месте, что и на первой странице.Сначала я попробовал это:
For x = 0 To UBound(ranges)
For y = 0 To UBound(pageNumbers) - 1
For z = pageNumbers(y) To pageNumbers(y + 1)
doc.Shapes("grpNav").Select
Selection.Copy
Selection.Paste ' (using this because Duplicate crashes Word for some reason!)
Set shpNav = doc.Shapes(doc.Shapes.Count)
shpNav.TextFrame.TextRange.Text = ranges(x)
doc.Hyperlinks.Add Anchor:=shpNav ' etc etc
shpNav.Top = (shpNav.Top + shpNav.Height * 2) + (doc.PageSetup.PageHeight * y)
Next z
Next y
Next x
Однако последняя строка вызывает ошибку:
shpNav.Top = (shpNav.Top + shpNav.Height * 2) + (doc.PageSetup.PageHeight * y)
Значение параметра было вне допустимого диапазона
После прочтения страницы MSDN для Shape.Top я понимаю, что это связано с тем, что Top ссылается на точку сверху «ограничительной рамки» фигур, а не на документ.
Я не могу найти никаких подсказок о том, как этого добиться.Я попытался сначала выбрать нужную страницу, используя мой массив pageNumbers в качестве руководства, но это не имело значения.Я не могу поместить фигуры в верхний или нижний колонтитул, потому что тогда нельзя нажимать на фигуры, чтобы перейти по их ссылке.
Как повторить фигуру на каждой странице, не используя верхний или нижний колонтитул?