Word VBA技术:将文档中的超链接转换为普通文本(取消超链接)

December 09, 2023
测试
测试
测试
测试
4 分钟阅读

标签:Word VBA

通常,当我们在文档中键入超链接形式的文字并按回车键时,Word会自动识别并添加超链接。当然,你可以设置Word选项来阻止自动转换功能。具体设置方法如下:

单击“文件——选项”,在出现的“Word选项”窗口中选择左侧的“校对”选项卡,在右侧单击“自动更正选项按钮”,在出现的“自动更正”窗口中选择“键入时自动套用格式”,取消勾选其中的“Internet及网络路径替换为超链接”前的复选框。如下图1所示。

图1

然而,对于文档中已经存在的超链接,则还需要逐个取消。此时,如果想要将文档中所有已有的超链接转换为普通文本,即取消其超链接,可以使用下面的代码:

Sub RemoveHyperlinks()
 Dim objHyperlink As Hyperlink
 Dim i As Long

 For i = ActiveDocument.Hyperlinks.Count To 1 Step -1
   ActiveDocument.Hyperlinks(i).Delete
 Next i
End Sub

注意,这里没有使用For Each循环,原因是许多Word集合(包括超链接集合)都存在Bug,它可能不会遍历集合中所有项。

上面的代码运行得很好,但如果定义了超链接具体的字符样式,则在运行上述代码后,格式仍会保留。如果想在取消超链接的同时也删除其格式,则可以使用下面的代码:

Sub RemoveHyperlinksAndFormat()
 Dim objHyperlink As Hyperlink
 Dim i As Long
 Dim rngRange As Range

 For i = ActiveDocument.Hyperlinks.Count To 1 Step -1
   With ActiveDocument.Hyperlinks(i)
     Set rngRange = .Range
     .Delete
     rngRange.Font.Reset
   End With
 Next i
End Sub

如果希望删除超链接,但仍然使用超链接字符样式格式化文本,可以使用下面的代码:

Sub RemoveHyperlinksButPreserveStyle()
 Dim objHyperlink As Hyperlink
 Dim i As Long
 Dim rngRange As Range

 For i = ActiveDocument.Hyperlinks.Count To 1 Step -1
   With ActiveDocument.Hyperlinks(i)
     Set rngRange = .Range
     .Delete
     rngRange.Style = wdStyleHyperlink
   End With
 Next i
End Sub

此外,上述代码存在一个问题:如果文档中存在目录,那么运行上述代码后,目录中文本的超链接会被取消,但页码的超链接仍保留。为了避免这种情况,可以使用下面的代码:

Sub RemoveHyperlinksExceptToc()
 Dim objHyperlink As Hyperlink
 Dim i As Long
 Dim rngRange As Range
 Dim objToc As TableOfContents
 Dim LinkIsToc As Boolean

 For i = ActiveDocument.Hyperlinks.Count To 1 Step -1
   With ActiveDocument.Hyperlinks(i)
     Set rngRange = .Range
     LinkIsToc = False
     For Each objToc In ActiveDocument.TablesOfContents
       If rngRange.InRange(objToc.Range) Then
         LinkIsToc = True
         Exit For
       End If
     Next objToc

     If Not LinkIsToc Then
       .Delete
       rngRange.Font.Reset
       'rngRange.Style = wdStyleHyperlink
     End If
   End With
 Next i
End Sub

注:近期的一系列Word VBA文章,是自己边学习边分享的,有用无用看个人,希望大家不要发表一些不好的评论,这些评论我不会通过的!

继续阅读

更多来自我们博客的帖子

如何安装 BuddyPress
由 测试 December 17, 2023
经过差不多一年的开发,BuddyPress 这个基于 WordPress Mu 的 SNS 插件正式版终于发布了。BuddyPress...
阅读更多
Filter如何工作
由 测试 December 17, 2023
在 web.xml...
阅读更多
如何理解CGAffineTransform
由 测试 December 17, 2023
CGAffineTransform A structure for holding an affine transformation matrix. ...
阅读更多