Повторите форму на каждой странице без использования верхнего или нижнего колонтитула - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь создать собственную панель навигации с широким полем слева от моего документа.Это немного похоже на оглавление, но использование форм вместо текстовых ссылок для визуальной привлекательности.

Мой код до сих пор копирует и вставляет фигуру, изменяет ее текст и назначает ему гиперссылку на соответствующую закладку в документе.Это делается путем поиска каждого стиля заголовка 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 в качестве руководства, но это не имело значения.Я не могу поместить фигуры в верхний или нижний колонтитул, потому что тогда нельзя нажимать на фигуры, чтобы перейти по их ссылке.

Как повторить фигуру на каждой странице, не используя верхний или нижний колонтитул?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...