我有一个带有自定义右键单击功能的工作簿,它根据用户选择的内容从另一个工作簿中提取单元格值。它工作得非常好,我只是从其他工作簿中获取单元格的值。有些单元格虽然包含超链接,但我想导入功能超链接,而不是单元格中显示的值的值。例如,以下图像包含输入工作簿的工作表BOS的单元格(Y216)中的超链接。:
这是我要复制的单元格的图像。这确实是一个超链接。
?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
部分来检索链接部分?
答案 0 :(得分:0)
你的命令对我有用,如果你想循环遍历工作表中的所有超链接,我不知道为什么你设置范围 - 无论你设置为应用程序的原因。工作簿 - 无论如何,这对我来说很好:
Sub HLtester()
Dim HL As Hyperlink
For Each HL In Sheets("Sheet1").UsedRange.Hyperlinks
Debug.Print HL.Address
Next
End Sub
您可以使用以下
在范围方法中获得它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。