计算内部链接(Microsoft Word)
Word允许您在文档中建立到外部文档或当前文档中其他位置的链接。 Peter正在寻找一种仅计算文档中内部链接的方法,并且想知道是否有这样做的方法。
您执行此操作的唯一方法是使用宏逐步浏览文档中的每个超链接。幸运的是,这可以通过检查“超链接”集合中的元素来轻松完成。每个超链接对象都有许多可以设置的属性,具体取决于链接的特征。特别重要的是Address和SubAddress属性。
Address属性(顾名思义)是链接的目标地址。通常,这类似于URL(如/),但也可以是可从系统或电子邮件地址访问的驱动器上文件的名称(如mailto:[email protected])。因为Address属性可以有多种用途,所以您不能专门检查是否存在诸如“ http”前缀之类的区分字符。如果缺少前缀,则该链接仍可以位于当前文档的外部,因为它可能引用了系统上的其他文件。
但是,在某些情况下,如果链接指向当前文档中的书签,则“地址”字段为空白。如果为空,则SubAddress属性将设置为链接中引用的书签的名称。当然,如果链接指向其他文档中的特定书签,则将同时设置Address和SubAddress属性。
要了解与每个超链接对象一起存储的信息,请查看以下简短宏。它逐步浏览每个链接并显示有关每个链接的信息。
Sub LinkInfo() Dim h As Hyperlink Dim sTemp As String For Each h In ActiveDocument.Hyperlinks sTemp = h.TextToDisplay & vbCrLf sTemp = sTemp & h.Address & vbCrLf sTemp = sTemp & h.SubAddress MsgBox sTemp Next h End Sub
因此,确定文档中内部链接的数量(换句话说,指向当前文档中书签的链接)的最简单方法是检查每个超链接对象的Address属性。
如果该属性为空,则可以安全地假定该链接是内部的。
Sub InternalLinks1() Dim h As Hyperlink Dim lInternal As Long lInternal = 0 If ActiveDocument.Hyperlinks.Count > 0 Then For Each h In ActiveDocument.Hyperlinks If h.Address = "" Then lInternal = lInternal + 1 Next hp End If MsgBox lInternal & " hyperlinks are internal" _ & " out of a total of " & ActiveDocument.Hyperlinks.Count End Sub
如果您希望将内部链接的实际目标列表放在一起,则可以轻松地在宏中添加一个宏,以便在For Each循环中的每个SubAddress属性中查找并将其添加到您在末尾显示的内容中宏。
当然,超链接不限于仅出现在文档正文中。您还可以在其他文档元素中具有超链接,例如页眉,页脚,尾注和文本框。宏的以下变体计算了它在文档中任何这些区域(StoryRanges)中找到的所有链接。
Sub InternalLinks2() Dim h As Hyperlink Dim lInternal As Long Dim lTotal As Long Dim aStory As Range lTotal = 0 lInternal = 0 For Each aStory In ActiveDocument.StoryRanges lTotal = lTotal + aStory.Hyperlinks.Count If aStory.Hyperlinks.Count > 0 Then For Each h In aStory.Hyperlinks If h.Address = "" Then lInternal = lInternal + 1 Next h End If Next aStory MsgBox lInternal & " hyperlinks are internal" _ & " out of a total of " & lTotal End Sub
注意:
如果您想知道如何使用此页面(或_WordTips_网站上的任何其他页面)中描述的宏,我准备了一个包含有用信息的特殊页面。
_WordTips_是您进行经济有效的Microsoft Word培训的来源。
(Microsoft Word是世界上最流行的文字处理软件。)本技巧(12814)适用于Microsoft Word 2007、2010和2013。