从不同工作簿中的单元格中提取超链接目标

时间:2016-08-02 14:47:14

标签: excel vba excel-vba

我有一个带有自定义右键单击功能的工作簿,它根据用户选择的内容从另一个工作簿中提取单元格值。它工作得非常好,我只是从其他工作簿中获取单元格的值。有些单元格虽然包含超链接,但我想导入功能超链接,而不是单元格中显示的值的值。例如,以下图像包含输入工作簿的工作表BOS的单元格(Y216)中的超链接。:

enter image description here

这是我要复制的单元格的图像。这确实是一个超链接。

?application.Workbooks(2).Sheets("BOS").Range("Y216").value

返回MKB 70-203 Wicket Shear Pin Detection System,这确实是正确的。

但是如何使用超链接的目的地呢?我尝试了几件事,包括

?application.Workbooks(2).Sheets("BOS").Range("Y216").Hyperlinks.count
即使你可以在图像中看到超链接确实有一个地址,

返回0。以相同的方式,以下子进入For Each,因为它计算0个超链接。

Sub HLtester()
    Dim HL As Hyperlink
    For Each HL In Application.Workbooks(2).Sheets("BOS").Range("Y216").Hyperlinks
        Debug.Print HL.Address
    Next
End Sub

预期输出将是链接的目标J:\SOUM\3191....,如图所示。

修改

如果重要的话,细胞的公式是

=LIEN_HYPERTEXTE("J:\SOUM\3191 M - Old Hickory Dam\11_BOS_FT\02_FT_MECT\21-200 Headcover";"21-200 Headcover")

顺便说一下,这是法国Excel的=HYPERLINK功能。我想最后我可以采用公式并切断function部分来检索链接部分?

1 个答案:

答案 0 :(得分:0)

你的命令对我有用,如果你想循环遍历工作表中的所有超链接,我不知道为什么你设置范围 - 无论你设置为应用程序的原因。工作簿 - 无论如何,这对我来说很好:

Sub HLtester()
    Dim HL As Hyperlink
    For Each HL In Sheets("Sheet1").UsedRange.Hyperlinks
        Debug.Print HL.Address
    Next
End Sub

enter image description here

您可以使用以下

在范围方法中获得它
ActiveCell.Hyperlinks(1).Address

您可以获得更多信息here

修改
由于“application.workbook”可能导致计数错误,尝试将其声明为变量而不是在整个代码中使用它

Sub HLtester()
    Dim HL As Hyperlink
    Dim WBAnalyzed As Workbook: Set WBAnalyzed = Workbooks("MyWB.xlsm")
    For Each HL In WBAnalyzed.Sheets("Sheet1").UsedRange.Hyperlinks
        Debug.Print HL.Address
    Next
End Sub

编辑2:
这是当它的公式

给出超链接时建议的方法
Sub test()
    On Error Resume Next 'means no formula
    x = Evaluate(Range("A1").Formula)
    x1 = Sheets("Sheet1").UsedRange.Hyperlinks.Count
    Debug.Print x
    Debug.Print x1
End Sub

PS:我保存了我的变量声明-just cause-,但是,你应该总是对它们进行整洁的控制,并在模块的开头使用explicit。

enter image description here