如何克服Excel中超链接的限制?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何克服Excel中超链接的限制?相关的知识,希望对你有一定的参考价值。

我有超过100000个单元格的链接列表。

Example

我必须给所有这些超链接。但在Excel中,每个工作表有一个限制66530超链接。

我怎样才能克服限制?或者如何使用宏或VBS合并具有相等值的单元格?

Sub AddHyperlinks()

  Dim myRange As Range
  Set myRange = Range("A1")
  Dim hText As Variant

  Do Until IsEmpty(myRange)

  hText = Application.VLookup(myRange.Value, Worksheets("Sheet2").Range("A:B"), 2, False)

  If IsError(hText) Then
      hText = ""
  Else
      ActiveSheet.Hyperlinks.Add Anchor:=myRange, Address:="http://" + hText, TextToDisplay:=myRange.Text
      hText = ""
  End If

  Set myRange = myRange.Offset(1, 0)
 Loop

End Sub
答案

只是定期复制粘贴应该工作,但我可以更新示例(未测试),如果它没有

Sub AddHyperlinks() 

    Dim rng As Range, rngFrom As Range, values, r
    Set rng = ThisWorkbook.Worksheets("Sheet1").Range("A1")
    Set rngFrom = ThisWorkbook.Worksheets("Sheet2").Range("A:A")

    rng.Worksheet.Hyperlinks.Delete   ' remove all previous Hyperlinks

    While rng(1) > ""

        ' resize the range to the same values
        While rng(rng.Rows.Count + 1) = rng(1)
            Set rng = rng.Resize(rng.Rows.Count + 1)
        Wend

        r = Application.Match(rng(1), rngFrom, 0)    
        If Not IsError(r) Then
            values = rng.Value2    ' save the values 
            rngFrom(r, 2).Copy rng ' copy from the cell next to the match
            rng.Value2 = values    ' restore the values (not sure if it removes the links) 
        End If

        Set rng = rng(rng.Rows.Count + 1) ' move to the next cell below
    Wend

End Sub
另一答案

255个字符的限制适用于可以放在一个单元格公式中的字符限制。一种常见的方法是将链接拆分为多个单元格并使用公式将它们组合在一起。

=HYPERLINK(A1&A2,"Click Here")
另一答案

如果你将URL存储在(例如)colA中,那么这样的东西应该有效:

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    Dim URL
    If Target.Column <> 1 Then Exit Sub '<< only reacting if cell in URL column is right-clicked
    URL = Target.Value
    ThisWorkbook.FollowHyperlink URL
End Sub

或者使用Before_DoubleClick事件

它确实意味着您不能使用“友好”链接文本,例如“单击此处”,但如果您将URL文本存储在固定偏移处然后读取而不是Target.Value,则可能会管理它

另一答案

我遇到了同样的问题,我知道我不应该有大约120000行需要超链接,所以修改了我在另一个线程中发现的一些代码

Sub hyperlink2()
Dim Cell As Range
Dim Cell2 As Range
Dim rng As Range
Dim Rng2 As Range

Set rng = Range("X2:X60000")


For Each Cell In rng
    If Cell <> "" Then ActiveSheet.Hyperlinks.Add Cell, Cell.Value
Next

Set Rng2 = Range("X60001:X120000")
For Each Cell2 In Rng2
    If Cell2 <> "" Then ActiveSheet.Hyperlinks.Add Cell2, Cell2.Value
Next

End Sub

希望通过谷歌(像我一样)帮助其他人偶然找到一个可行的解决方案......

以上是关于如何克服Excel中超链接的限制?的主要内容,如果未能解决你的问题,请参考以下文章

如何修改bootstrap中超链接的颜色

如何通过Java代码实现对网页数据进行指定抓取

如何克服 `PERCENTILE_CONT` 的参数应该是常量的限制?

Codeforces 解决方案中超出时间限制。如何改进我的解决方案?

使用 exec() eval() 方法时如何克服格式化字符串的限制?

使用OPEN XML SDK 读取EXCEL中的超链接Hyperlink