我正在使用以下VBA宏在我的文档中的所有书签超链接之后添加页码:
<ItemsControl ItemsSource="{Binding Names}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding}"
Margin="5,0,0,0" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
然而,它有不良后果。
超链接的蓝色部分溢出到添加的文本中。
当我将生成的文件保存为HTML时,它会创建一堆疯狂的span标记。我不想要这个,因为我要将HTML转换为.mobi用于Kindle,所有的span标签都会在我的.mobi中造成混乱。
如何删除所有格式并在&#34; Normal&#34;中插入页码?字样?
答案 0 :(得分:0)
我怀疑 真实 的答案是使用a good e-book editor来跟踪这一点。
也就是说,问题很可能是你在处理Hyperlink的范围,所以你应该做的就是复制它。这允许您的范围的格式与连接到超链接的任何格式分开。使用超链接范围的副本的另一个好处是,您可以直接操作范围的文本而不会破坏链接,这也是保留目标格式的简单方法:
Sub InsertPageRefs()
Dim hLnk As Hyperlink
Dim Rng As Range
For Each hLnk In ActiveDocument.Hyperlinks
If InStr(hLnk.SubAddress, "_Toc") = 0 And hLnk.Address = vbNullString Then
Set Rng = hLnk.Range.Duplicate
Rng.Start = Rng.End
Rng.Text = " (See page #)"
Rng.Font.Underline = wdUnderlineNone
ActiveDocument.Fields.Add Range:=Rng.Characters(InStr(Rng, "#")), _
Text:="PAGEREF " & hLnk.SubAddress
End If
Next
MsgBox ActiveDocument.Hyperlinks.Count & " page numbers have been added.", vbOKOnly
End Sub
请注意,我删除了With块以使其更具可读性。嵌套的Withs使得一眼就能看出你正在操作的对象更加困难。