Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Word VBA技术:将文档中的超链接转换为普通文本(取消超链接)

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

作者头像
fanjy
发布于 2023-02-24 12:25:15
发布于 2023-02-24 12:25:15
3.3K00
代码可运行
举报
文章被收录于专栏:完美Excel完美Excel
运行总次数:0
代码可运行

标签:Word VBA

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

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

图1

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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,它可能不会遍历集合中所有项。

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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文章,是自己边学习边分享的,有用无用看个人,希望大家不要发表一些不好的评论,这些评论我不会通过的!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-12-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Word VBA实战应用:给文本添加屏幕提示
本文提供的Word VBA程序可以在Word中制作类似网站中的屏幕提示,即将鼠标悬停在特定文本上时显示包含相关信息的小框。你可以使用这类屏幕提示来显示术语的定义、提示该段文本的特殊作用,等等。
fanjy
2023/02/24
2K0
解决方案——Zotero生成的参考文献和Word如何建立超链接,实现点击引用跳转的效果
Zotero是一款开源的文献管理工具,它可以帮助用户方便地收集、组织、引用和共享文献。
中杯可乐多加冰
2024/10/05
2.6K4
Excel小技巧18:阻止Excel将某些文本自动转换为超链接
当我们在工作表单元格中键入网址或者电子邮件地址时,Excel会自动将文本转换为超链接,然而,这项看似方便的功能有时候会带来一些麻烦,譬如我们想要编辑这些单元格时,不能直接单击,只能使用鼠标右键或者在公式编辑栏中来选择该单元格并编辑内容。
fanjy
2019/09/27
1.8K0
VBA专题06-2:利用Excel中的数据自动化构建Word文档—熟悉Word VBA
VBA是一种通用编程语言,适用于任何内置有VBA的应用程序,因此Word VBA与Excel VBA的语法一样,只是处理的对象模型不同。下面,我们通过一些示例语句及其作用描述来熟悉Word VBA。(注:这些语句来源于作者早期发表的VBA语句集,长期关注作者的朋友可能会有印象)
fanjy
2019/10/09
2.9K0
VBA专题06-2:利用Excel中的数据自动化构建Word文档—熟悉Word VBA
Word VBA应用技术:列出文档中的所有书签
如果文档中设置了许多书签,如何清楚地看到它们并快速导航?一个好的方法是创建菜单实现,其中在菜单上为每个书签创建一个项目,这样在选取该项目时快速转到该书签。
fanjy
2023/02/16
1.3K0
Word VBA应用技术:列出文档中的所有书签
删除或关闭Word中的超链接
最近使用的word老是会把一些文字内容或者标题转换成乱七八糟的格式,看的莫名其妙的,找了好久也不知道什么问题,后来一查才知道是因为这些文字包含超链接,word自动转换了。。。你说是不是莫名其妙。
marsggbo
2019/05/26
2.7K0
Python批量爬虫下载文件——把Excel中的超链接快速变成网址
本文的背景是:大学关系很好的老师问我能不能把Excel中1000个超链接网址对应的pdf文档下载下来。
阿黎逸阳
2023/08/21
1.2K0
Python批量爬虫下载文件——把Excel中的超链接快速变成网址
VBA清空所有超链接
VBA删除所有超链接: Sub Delete_Hyperlinks() On Error GoTo Tuichu Dim HyperlinkNumber As Integer Dim WorkSheetNumber As Integer Dim i As Integer WorkSheetNumber = Worksheets.Count For i = 1 To WorkSheetNumber HyperlinkNumber = Wo
办公魔盒
2019/07/22
1.3K0
VBA清空所有超链接
VBA: 获取单元格内超链接文件的绝对路径
文章背景:在工作中,有时为了内容跳转的方便,会在单元格内设置超链接,通过Hyperlinks(1).Address,得到的是超链接文件的相对路径。有时为了VBA代码的编写方便,需要使用的是链接文件的绝对路径。下面通过编写VBA函数,获取单元格内超链接文件的绝对路径。
Exploring
2022/09/20
3.6K0
VBA: 获取单元格内超链接文件的绝对路径
Word VBA实战技巧:删除文档中所有的空段落
一种方法是使用Word的查找和替换功能,使用通配符查找:^13{2,},使用^p替换。另一种方法是使用VBA。
fanjy
2023/02/24
1.7K0
Word VBA技术:统计文档中每个字母字符的数量
在某些情况下,可能想知道在文档中每个字母有多少个,即字母a-Z中每个有多少,或者可能想找出特定文本中最常用的字母。
fanjy
2023/02/24
2.4K0
Word VBA技术:删除表格中内容相同的重复行(加强版)
在《Word VBA技术:删除表格中内容相同的重复行》中,我们演示了如何使用代码删除已排序表中第1列内容相同的行。然而,如果表格中第1列没有排序,那么如何删除这列中内容相同的行呢?
fanjy
2023/02/24
2.8K0
Word VBA技术:删除表格中内容相同的重复行
上面的代码区分大小写,即第一列中内容相同但大小写不同不会被删除。下面的代码操作时不区分大小写:
fanjy
2023/02/24
5K0
Word VBA技术:对文档中的所有表格应用统一的边框
如果你的文档中或者他人传给你的文档中有很多表格,但这些表格有不同样式的边框,而你现在想将这些表格的边框设置为统一的样式,怎么办?当然,你可以逐个表格逐个表格地设置,但是如果文档中的表格很多,这样的操作既繁琐又浪费时间。这种情形下,VBA就派上用场了。
fanjy
2023/02/24
1.6K0
VBA专题06-4:利用Excel中的数据自动化构建Word文档—Excel与Word整合示例1
1.创建Word文档模板,用来作为数据分析结果发布平台。在模板中,在每个要插入数据的位置定义书签。当然,对于只导入一两个数据表来说,这一步可选。
fanjy
2019/10/09
6K0
VBA专题06-4:利用Excel中的数据自动化构建Word文档—Excel与Word整合示例1
Word VBA技术:设置文档中表格的格式
在编辑Word文档时,经常会使用表格,也会设置表格格式,让表格看起来更美观。那么,在VBA中如何操作表格来设置其格式呢?下面介绍两段简单的代码,来学习使用代码初步设置表格的格式。
fanjy
2023/02/24
1.5K0
Word VBA技术:处理书签
1.“占位符”书签(Placeholder Bookmarks),即在文档中单击某处,然后插入的书签。
fanjy
2023/02/16
1.2K0
Excel VBA编程
在Excel中,数据只有文本,数值,日期值,逻辑值和错误值五种类型。但是在VBA中,数据类型跟Excel不完全相同。根据数据的特点,VBA将数据分为布尔型(boolean),字节型(byte),整数型(integer),单精度浮点型(single),双精度浮点型(double),货币型(currency),小数型(decimal),字符串型(string),日期型(date),对象型等等
全栈程序员站长
2022/08/11
46.9K0
Excel VBA编程
Word VBA技术:比较相邻两段,删除相同的段落
如果要删除文档中存在内容重复的段落,怎么操作?当然,很简单,找到后直接选择重复的段落,按Delete键删除即可。
fanjy
2023/02/24
7470
Word VBA技术:提取文档中的所有批注并在新文档中放置其详细信息
有时候,文档中可能有各种各样的批注,如果批注很多,要逐一查看,可能会遗漏或者需要上上下下翻动文档。如果我们将所有批注提取出来,放置在一个新文档中,这样就便于查阅了。
fanjy
2023/02/24
1.7K0
Word VBA技术:提取文档中的所有批注并在新文档中放置其详细信息
推荐阅读
相关推荐
Word VBA实战应用:给文本添加屏幕提示
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验