如何编写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
?
答案 0 :(得分:2)
这应该有效:
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)完全不同,声明您的类型将有很大帮助。这是另一种情况,即" Option Explicit"在模块的顶部会有所帮助。
答案 1 :(得分:0)
我对评论的理解是,您已经将列J设置为URL的字符串。如果是这样,这个简单的脚本应该完成这项工作(它会将单元格超链接到单元格内指定的地址,如果您愿意,可以通过更改textToDisplay选项来更改单元格文本)。如果我误解了这个并且字符串在AD列中,只需计算出AD的列号并替换以下行:
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
答案 2 :(得分:0)
尝试按以下方式运行每个循环:
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
答案 3 :(得分:0)
不知道为什么要花大价钱,代码很简单
Sub ExtractURL()
Dim GetURL As String
For i = 3 To 500
If IsEmpty(Cells(i, 1)) = False Then
Sheets("Sheet2").Range("D" & i).Value =
Sheets("Sheet2").Range("A" & i).Hyperlinks(1).Address
End If
Next i
End Sub
答案 4 :(得分:0)
这个 IMO 应该是一个函数来返回这样的字符串。
Public Sub TestHyperLink()
Dim CellRng As Range
Set CellRng = Range("B3")
Dim HyperLinkURLStr As String
HyperLinkURLStr = HyperLinkURLFromCell(CellRng)
Debug.Print HyperLinkURLStr
End Sub
Public Function HyperLinkURLFromCell(CellRng As Range) As String
HyperLinkURLFromCell = CStr(CellRng.Hyperlinks(1).Address)
End Function