ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > Word > 如何用vba代码将word文本中的网址或下载地址加上超链接并修改字体?

如何用vba代码将word文本中的网址或下载地址加上超链接并修改字体?

作者:绿色风 分类: 时间:2022-08-18 浏览:122
楼主
kevinchengcw
Q: 如何用vba代码将word文本中的网址或下载地址加上超链接并修改字体?
A: 实现代码如下:
  1. Sub test()
  2. Dim HLK As Hyperlink, Match, Dic As Object, Arr, N&, I&, Str$
  3. '先删除全部的链接(本步骤可根据需要取消)
  4. Do
  5.     For Each HLK In ThisDocument.Hyperlinks
  6.         HLK.Delete
  7.     Next HLK
  8. Loop While ThisDocument.Hyperlinks.Count > 0
  9. Application.ScreenUpdating = False  '关闭屏幕刷新,提高处理速度
  10. With CreateObject("vbscript.regexp")  '创建正则项目,用于提取网址或下载地址
  11.     .Global = True  '全局有效
  12.     .MultiLine = True  '多行有效
  13.     .ignorecase = True  '忽略大小写
  14.     .Pattern = "[\w\d]+\:\/\/[\x20-\x7e]{4,128}|(([\w\/]+\.)+(com|cn|net|cc|la))"  '设置匹配规则(因word查找的文本有长度限制,故设置最长匹配128个字符)
  15.     If .test(ThisDocument.Range.Text) Then  '判断当前文档是否有匹配内容,如果有,则
  16.         Set Dic = CreateObject("scripting.dictionary")  '创建字典项目用于提取内容的去除重复
  17.         For Each Match In .Execute(ThisDocument.Range.Text)  '循环各个匹配项
  18.             Dic(Match.Value) = ""  '利用字典去除重复内容
  19.         Next Match
  20.         Arr = Dic.keys  '提取出网址列表
  21.         For N = LBound(Arr) To UBound(Arr) - 1  '进行排序,长的网址在前,短的网址在后,用于避免短网址包含于长网址内先行查找造成处理结果不合要求的情况
  22.             For I = N + 1 To UBound(Arr)
  23.                 If Len(Arr(I)) > Len(Arr(N)) Then
  24.                     Str = Arr(I)
  25.                     Arr(I) = Arr(N)
  26.                     Arr(N) = Str
  27.                 End If
  28.             Next I
  29.         Next N
  30.         Set Dic = Nothing  '清空字典项目
  31.         For N = LBound(Arr) To UBound(Arr)  '循环处理列表中的各个网址
  32.             With Selection.Find  '设定查找参数
  33.                 .ClearFormatting  '不查找格式
  34.                 .Forward = True  '向下查找
  35.                 .Wrap = wdFindStop  '到文档结尾后结束
  36.                 .Text = Arr(N)  '查找内容为当前循环到的数组项目中网址内容
  37.                 .Parent.HomeKey wdStory  '跳到文档开头
  38.                 Do
  39.                     .Execute  '执行查找
  40.                     If .Found Then  '如果找到对应内容
  41.                         If .Parent.Range.Text Like "*://*" Then .Parent.Expand wdSentence  '如果含有标志字段则选中整个句段
  42.                         Str = .Parent.Range.Text  '取得选区的文本
  43.                         ThisDocument.Range(Selection.Range.Start + InStr(Str, Arr(N)) - 1, Selection.Range.Start + Len(Replace(Str, Chr(13), ""))).Select  '根据网址开头和结尾特征修正选区范围
  44.                         If .Parent.Hyperlinks.Count = 0 Then  '如果选区没有链接,则添加链接
  45.                             .Parent.Hyperlinks.Add .Parent.Range, IIf(Arr(N) Like "*://*", .Parent.Range.Text, "http://" & Arr(N)), , , .Parent.Range.Text
  46.                         Else  '否则退出循环
  47.                             Exit Do
  48.                         End If
  49.                     End If
  50.                 Loop While .Found  '查找不到时退出循环
  51.             End With
  52.         Next N
  53.         For Each HLK In ThisDocument.Hyperlinks  '循环文档中各个链接
  54.             With HLK.Range.Font  '设置链接区域的字体
  55.                 .Name = "Times New Roman"
  56.                 .Size = 16
  57.                 .Color = wdColorRed
  58.                 .Bold = True
  59.                 .Italic = True
  60.             End With
  61.         Next HLK
  62.     End If
  63. End With
  64. Application.ScreenUpdating = True  '打开屏幕刷新
  65. End Sub
详见附件及素材源帖。


网址加链接.rar
2楼
xyf2210
下载学习
3楼
lnt1231

支持K版.


免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap