这是一个常见的问题,答案简单,但我似乎无法找到解决方案。使用Excel宏,我检查网站主页的链接,并将这些链接放入Excel中的范围。
现在我想将这些值变成超链接。
Set allLinks = objIE.document.GetElementsByTagName("A")
For Each link In allLinks
If InStr(link.href, inspectOneCat) Then
inspectLink(linkCount) = link
linkCount = linkCount + 1
End If
Next
在下一步中,将一维数组转换为二维数组,其中inspectLink(i,0)中的描述性列和inspectLink(i,1)中的链接值。然后将数组加载到一个范围内,如下所示:
Sheets("Awesomepova").Range("a2:b300").Value = inspectLink
这很有效。但这些链接显示为值,而不是超链接。我想做这样的事情:
'Sheets("Awesomepova").Hyperlinks.Add Sheets("Awesomepova").Range("a2:b300"), Sheets("Awesomepova").Range("a2:b300").Value
这不起作用。但我手动进入工作表并更改了第一个单元格,因此它是超链接的,我注意到即使我以编程方式重新加载整个范围,超链接仍然存在,所以我认为这是单元格格式的一个特征,而不是单元格中的实际数据。
也许可以通过将相同的格式应用于规则将单元格值用作超链接值的列中的所有单元格来修复问题。
答案 0 :(得分:4)
使用For i...
循环
Public Sub TestMe()
Dim myArr As Variant
Dim i As Long
myArr = Array("www.bbc.com", "www.stackoverflow.com")
For i = 0 To UBound(myArr)
Worksheets(1).Cells(i + 1, 1).Hyperlinks.Add Worksheets(1).Cells(i + 1, 1), myArr(i)
Next i
End Sub
答案 1 :(得分:2)
考虑到您已经抓取了数组inspectLink
中的网站,这样的内容有效:
Public Sub TestMe()
Dim myArr As Variant
Dim myUnit As Variant
Dim myCell As Range
myArr = Array("www.sugarpova.com", "www.stackoverflow.com")
Set myCell = Worksheets(1).Cells(1, 1)
For Each myUnit In myArr
myCell.Hyperlinks.Add myCell, myUnit
Set myCell = myCell.Offset(1, 0)
Next myUnit
End Sub
它在第一张工作表上打印工作超链接:
答案 2 :(得分:0)
尝试使用Hyperlinks.add一次循环遍历a2:b300一个超链接,而不是试图强制Hyperlinks.Add在一个命令中应用于整个范围:
For Row = 2 To 300
URL = Sheets("Awesomepova").Range("B" & Row).Value
Text = Sheets("Awesomepova").Range("A" & Row).Value
If URL <> "" Then
Set result = Sheets("Awesomepova").Hyperlinks.Add(Range("C" & Row), URL, "", TextToDisplay:=Text)
End If
Next
答案 3 :(得分:0)
你可以用同样的方法做几件事。怎么样?
Sub Demo()
Dim storage As Variant, cel As Variant, r&
storage = [{"https://www.google.com/", "https://www.yahoo.com/","https://www.wikipedia.org/"}]
For Each cel In storage
r = r + 1: Cells(r, 1).Hyperlinks.Add Cells(r, 1), cel
Next cel
End Sub