Linda的Word文档包含许多(1,800+)个超链接,这些超链接指向Internet上的资源。她需要转换所有超链接,以使它们不是Web上URL的绝对地址,而是指向USB驱动器上的相对位置。 HTML文件的名称在USB驱动器上与在Web上的名称相同,只是HTML文件的位置在变化。琳达想知道进行转换的最佳方法。

最好的方法是使用宏进行转换。文档中的每个超链接都存储在“超链接”集合中,该集合可通过VBA轻松访问。这使您可以逐步浏览超链接的集合,检查每个超链接的地址,然后在其中进行修改。这是此类宏的示例:

Sub ConvertHyperlinks()

Dim sNewBase As String     Dim sFile As String     Dim sNewFile As String     Dim sChanged As String     Dim sNotChanged As String     Dim sTemp As String     Dim J As Integer     Dim h As Hyperlink

sNewBase = "c:\myplace\"

sChanged = ""

sNotChanged = ""



For Each h In ActiveDocument.Hyperlinks         sTemp = h.Address         If Left(sTemp, 5) = "https:" Then             sFile = ""

For J = Len(sTemp) To 2 Step -1                 If Mid(sTemp, J, 1) = "/" Then                     sFile = Right(sTemp, Len(sTemp) - J)

Exit For                 End If             Next J

If sFile > "" Then                 sNewFile = sNewBase & sFile                 h.Address = sNewFile                 sChanged = sChanged & sTemp & " (changed to " & _                   sNewFile & ")" & vbCrLf             Else                 sNotChanged = sNotChanged & sTemp & vbCrLf             End If         Else             sNotChanged = sNotChanged & sTemp & vbCrLf         End If     Next h

Documents.Add     Selection.TypeText "The following hyperlinks were modified:" & vbCrLf     Selection.TypeText sChanged & vbCrLf & vbCrLf     Selection.TypeText "The following hyperlinks were not modified:" & vbCrLf     Selection.TypeText sNotChanged & vbCrLf End Sub

宏首先逐步完成“超链接”集合。每个地址都分配给sTemp变量,然后将其检查以查看其是否以“ https:”开头。某些超链接(例如,用于电子邮件地址或指向现有文件的超链接)不会以这些字符开头。

如果找到匹配项,则代码将向后退回该地址,以找到该地址中的最后斜杠。找到后,将sFile设置为等于该最后斜杠之后的所有内容,这意味着它将等于HTML文件。

有趣的旁注是,当您在Word文档中创建超链接时,Word会对您键入的内容与实际存储在超链接中的内容进行一点处理。例如,假设您在文档中键入以下内容:

www.Tips.net

Word会自动将其识别为网站并将其转换为超链接。 (当然,假设您已设置Word来执行自动URL转换。)如果查看实际存储在创建的超链接中的地址,则会看到以下内容:

https://www.Tips.net/

由于此地址以“ https:”开头,因此宏会将其视为可处理的内容。但是,循环返回地址以查找最后一个斜杠字符的循环将在末尾找到它。这意味着由于以下代码,sFile将为空:

sFile = Right(sTemp, Len(sTemp) - J)

sTemp和J的长度与字符串中的最后一个字符完全相同,因此sFile最终包含最右边的0个字符,这意味着它为空。最重要的是,它不包含文件名,因此原始URL不会转换为其他名称。

为了使宏在您的系统上正常工作,您需要更改sNewBase字符串以包含要添加到已处理地址开头的任何内容。请注意,按照书面说明,添加到文件开头的默认字符串为“ c:\ myplace \”。因此,“`link:/ privacy”更改为“ c:\ myplace \ privacy”。严格来说,此转换后的地址不是相对超链接。相对超链接的开头没有c:\字符,因此最终将类似于“ \ myplace \ privacy”。同样,您可以将sNewBase的值更改为所需的任何值,以便转换后的超链接看起来像您想要的那样。

运行宏不会花很长时间。无论文档中有多少个超链接,它都非常快。宏完成后,它将创建一个新文档,其中显示已修改的超链接和未修改的超链接。

注意:

如果您想知道如何使用此页面(或_WordTips_网站上的任何其他页面)上描述的宏,我准备了一个包含有用信息的特殊页面。

https:-wordribbon.tips.net-WordTipsMacros [单击此处在新的浏览器选项卡中打开该特殊页面]。

_WordTips_是您进行经济有效的Microsoft Word培训的来源。

(Microsoft Word是世界上最流行的文字处理软件。)本技巧(12931)适用于Microsoft Word 2007、2010、2013、2016、2019和Office 365中的Word。