Excel VBA获取特定单元格的超链接地址

如何编写Excel VBA来检索特定单元格中超链接的URL /地址?

我在工作簿的sheet2上工作,它包含大约300行。 每行在“AD”列都有唯一的超链接。 我想要去循环在列“J”中的每个空白单元格,并将其值从空白更改为它的列“AD”单元格的超链接URL。 我目前使用这个代码:

do while.... NextToFill = Sheet2.Range("J1").End(xlDown).Offset(1).Address On Error Resume Next GetAddress = Sheet2.Range("AD" & Sheet2.Range(NextToFill).Row).Hyperlinks(1).Address On Error GoTo 0 loop 

上述代码的问题是它总是得到第一个超链接的地址,因为代码是.Hyperlinks(1).Address 。 有无论如何通过范围地址获取超链接地址可能sheet1.range("AD32").Hyperlinks.Address

这应该工作:

 Dim r As Long, h As Hyperlink For r = 1 To Range("AD1").End(xlDown).Row For Each h In ActiveSheet.Hyperlinks If Cells(r, "AD").Address = h.Range.Address Then Cells(r, "J") = h.Address End If Next h Next r 

这有点令人困惑,因为Range.Address与Hyperlink.Address(这是你的URL)完全不同,声明你的types会有很大的帮助。 这是另一种情况下,将“Option Explicit”放在模块的顶部会有帮助。

我从意见的理解是,你已经把J列设置为一个URL的string。 如果是这样,这个简单的脚本应该做的工作(它将超链接到单元格内指定的地址单元格,您可以更改单元格文本,如果您希望通过更改textToDisplay选项)。 如果我误解了这一点,string是在AD列简单地计算AD的列号,并replace下面的行:

 fileLink = Cells(i, the number of column AD) 

剧本:

 Sub AddHyperlink() Dim fileLink As String Application.ScreenUpdating = False With ActiveSheet lastrow = .Cells(.Rows.Count, "A").End(xlUp).Row For i = 4 To lastrow fileLink = Cells(i, 10) .Hyperlinks.Add Anchor:=Cells(i, 10), _ Address:=fileLink, _ TextToDisplay:=fileLink Next i End With Application.ScreenUpdating = True End Sub 

尝试运行每个循环如下:

 do while.... NextToFill = Sheet2.Range("J1").End(xlDown).Offset(1).Address On Error Resume Next **for each** lnk in Sheet2.Range("AD" & Sheet2.Range(NextToFill).Row).Hyperlinks GetAddress=lnk.Address next On Error GoTo 0 loop