以编程方式将href超链接添加到excel范围

时间:2018-03-19 13:56:35

标签: excel vba excel-vba

这是一个常见的问题,答案简单,但我似乎无法找到解决方案。使用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

这不起作用。但我手动进入工作表并更改了第一个单元格,因此它是超链接的,我注意到即使我以编程方式重新加载整个范围,超链接仍然存在,所以我认为这是单元格格式的一个特征,而不是单元格中的实际数据。

也许可以通过将相同的格式应用于规则将单元格值用作超链接值的列中的所有单元格来修复问题。

4 个答案:

答案 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

它在第一张工作表上打印工作超链接:

enter image description here

答案 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