0

通过“字段引用的值”,我指的是 {} 之间的文本。

我有的

目前,我在这样的文本页面中有很多超链接:

测试 123和测试321

我希望什么

我想用纯文本查找和替换超链接域代码的每个实例。具体来说,我希望输出看起来像这样,在任何情况下:*www.hyperlink.com

我试过的

到目前为止,我已经能够通过将以下内容放入“查找”表单中来选择有问题的字段,并带有超链接:HYPERLINK“*”

但是,我不确定在替换字段中放入什么以便根据需要更新文本,手动复制每个链接,然后在每种情况下替换为 '^c'。由于我有超过 100 页的链接密集文本,这是不可行的。我还尝试使用通配符并替换为文本:* 但通配符似乎无法识别它在代数上等同于“查找”表单的通配符。

我最接近的是当我尝试时: Find: HYPERLINK "(*)" Replace: \1 选中“使用通配符”选项。

虽然它将超链接移动到 ref 标记之间,并消除了 HYPERLINK 文本,但保留了大括号 { }。所以,当我退出表单域模式(Alt F9)时,www.ExampleHyperlink.com 消失了,因为它被认为是表单域!

当我将大括号放在“查找”字段中时,搜索失败 - 所以我猜我无法搜索它们,以便替换它们。

可能的代码?

Sub Macro3()
'
' Macro3 Macro
'
'
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "HYPERLINK ""(*)"""
        .Replacement.Text = "\1"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = True
    End With
    Selection.Find.Execute replace:=wdReplaceAll
End Sub

对 MacroPod 的响应

谢谢!

现在,我可以消除超链接字段代码,并保留超链接 :)

我将您的宏与以下宏/步骤结合起来以添加文本并围绕每个 URL:

Sub Macro1()
'
' Macro1 Macro
'
'
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "(<http://*.com>)"
        .Replacement.Text = "<ref>\1</ref>"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = True
    End With
    Selection.Find.Execute replace:=wdReplaceAll
    With Selection.Find
        .Text = "(<www.*.com>)"
        .Replacement.Text = "<ref>\1</ref>"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = True
    End With
    Selection.Find.Execute replace:=wdReplaceAll
End Sub

它工作得几乎完美,除了 '.com' 之后的 URL 的任何部分都被遗漏了。例如,如果 URL 是:' https://www.google.com/intl/en_us/health/about/ ',那么输出是:

'<ref> https://www.google.com </ref> /intl/en_us/health/about/' 

这不是我想要的,因为我希望第二个 ref 标记出现在 URL 的最后一部分之后。另一个问题是,无论链接到 URL 的锚文本是什么,都会消失。理想情况下,它会出现在标签之前。那是因为某些东西通常是这样联系在一起的:酷总是很酷。我非常感谢您的帮助。知道我该如何处理吗?

4

1 回答 1

0

尝试:

Sub Demo()
With ActiveDocument
  While .Hyperlinks.Count > 0
    .Hyperlinks(1).Range.InsertBefore .Hyperlinks(1).Address
    .Hyperlinks(1).Delete
  Wend
End With
End Sub
于 2018-04-12T00:33:08.347 回答