从 Word 中的选定文本中提取超链接

Posted

技术标签:

【中文标题】从 Word 中的选定文本中提取超链接【英文标题】:Extracting hyperlinks from selected text in Word 【发布时间】:2021-12-14 15:17:29 【问题描述】:

应在代码中更改哪些内容(可在 www.extendoffice.com 找到)以将其限制为文本的选定部分(不适用于整个文档)。

代码正在从一个 Word 文档中提取超链接到另一个。

Sub HyperlinksExtract()
    Dim oLink As Hyperlink
    Dim docCurrent As Document 'current document
    Dim docNew As Document 'new document
    Dim rngStory As StoryRanges
    Set docCurrent = ActiveDocument
    Set docNew = Documents.Add
    For Each oLink In docCurrent.Hyperlinks
        oLink.range.Copy
        docNew.Activate
        Selection.Paste
        Selection.TypeParagraph
    Next
     
    Set docNew = Nothing
    Set docCurrent = Nothing
End Sub

【问题讨论】:

试试Try For Each oLink In Selection.Hyperlinks,可能因为docNew.Activate而不起作用。你在docNew 的哪个位置粘贴? 不幸的是它不起作用。对于每个 oLink 在 Selection.Hyperlinks 中打开了新文档但为空。我只想以任何形式生成这些超链接的列表 - 现在它在新文档中,但也可以在 excel 中,甚至在与所选文本相同的文档中 - 只是为了在所选文本的末尾创建这些超链接的列表文本。 【参考方案1】:

诀窍是将选定的超链接存储在变量 selectedHyperlinks 中。

此外,我总是尽量避免复制/粘贴。因此,我使用Hyperlinks.Add 方法来插入指向新文档的链接

Sub HyperlinksExtract()

    Dim docCurrent As Document
    Dim docNew As Document
    
    Set docNew = Documents.Add
    Dim rgTarget As Range: Set rgTarget = docNew.Range
    
    Dim selectedHyperlinks As Hyperlinks
    Set selectedHyperlinks = Selection.Hyperlinks   '<<< this is where the selected hyperlinks are stored in the variable
    
    Dim oLink As Hyperlink
    
    For Each oLink In selectedHyperlinks 
        rgTarget.Collapse wdCollapseEnd
        docNew.Hyperlinks.Add rgTarget, oLink.Address, oLink.SubAddress, , oLink.TextToDisplay
        rgTarget.Move wdParagraph, 1
        rgTarget.InsertParagraphAfter
    Next
     
End Sub

【讨论】:

以上是关于从 Word 中的选定文本中提取超链接的主要内容,如果未能解决你的问题,请参考以下文章

如何使用ruby中的电子表格gem从excel单元格中提取超链接地址?

在 Python 中从 PDF 中提取超链接

php高手请进:正则提取超链接中的网址和标题,如果兼顾有双引号和单引号或没有引号的超链接?

java 解析html 提取超链接,然后将超链接存储到文本中

删除文本和超链接然后转发

PHP正则表达式提取html超链接中的href地址