我正在尝试在文档左侧的空白处构建自定义导航栏。它有点像一个目录,但是使用形状而不是文本链接来吸引视觉。
到目前为止,我的代码复制并粘贴了一个形状,更改了其文本,并为其分配了指向文档中相关书签的超链接。这是通过在文档中查找每个标题样式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)
参数值超出可接受范围
由于阅读了Shape.Top的MSDN页面,所以我意识到这是因为“顶部”是指形状“边界框”顶部而不是文档顶部的点。
我找不到有关如何实现此目标的任何线索。我尝试先使用pageNumbers数组作为指南来选择所需的页面,但这没什么区别。我不能将形状放在页眉或页脚中,因为这样就无法单击形状来跟随它们的链接。
如何在不使用页眉或页脚的情况下在每个页面上重复一个形状?