【问题标题】:Extracting hyperlink from a range and writing them on another range从范围中提取超链接并将它们写入另一个范围
【发布时间】:2018-06-27 19:11:47
【问题描述】:

我是这个网站的新手,但我已经找到了一些关于如何解决 VBA 问题的好建议。现在我来这里就一个给我带来超链接问题的子问题寻求帮助。 特别是,我的问题类似于本主题中描述的问题:

Excel VBA Get hyperlink address of specific cell

我有一个充满超链接的工作表,但我只需要提取“H”列中存在的地址,从“H6”开始,并将它们写入“N”列,从“N6”开始。

我记下这段代码:

Sub EstraiIndirizzoPut()

Dim IndirizzoInternet As Hyperlink
Dim ISINs As String

i = 6

For Each IndirizzoInternet In Sheets("XXX").Range("H" & i).Hyperlinks
IndirizzoInternet.Range.Offset(0, 6).Value = IndirizzoInternet.Address
ISINs = Mid(IndirizzoInternet.Address, 78, 12)
Range("N" & i).Value = ISINs
i = i + 1

Next

End Sub

它仅适用于第一个“H6”单元格,但在“下一个”点,当它应该读取“H7”单元格时,它会转到“End Sub”,终止例程,尽管“H7” " 单元格以及该列中的许多其他单元格都充满了超链接(它给了我“无”的值)。 你能告诉我我哪里弄错了吗?非常感谢。

【问题讨论】:

    标签: vba excel hyperlink


    【解决方案1】:

    您的循环设置不正确。试试这样吧:

    For i = 6 to 100
      Set IndirizzoInternet = Sheets("XXX").Range("H" & i).Hyperlinks
      IndirizzoInternet.Range.Offset(0, 6).Value = IndirizzoInternet.Address
      ISINs = Mid(IndirizzoInternet.Address, 78, 12)
      Range("N" & i).Value = ISINs
    Next
    

    你怎么知道什么时候停止循环?它是预设的行数吗?如果不是,您将需要确定要处理的最后一行并将100 替换为该变量。

    【讨论】:

    • 你好braX,谢谢你的回答。我尝试了您的解决方案,但在 Set IndirizzoInternet = Sheets("XXX").Range("H" & i).Hyperlinks 行进行调试,它给了我运行时错误“13”:“类型不匹配”。也许我应该放一个do while循环?再次感谢。
    • 试着把这个:Dim IndirizzoInternet As Hyperlink改成这个Dim IndirizzoInternet As Variant
    • 你好文胸,再次感谢。使用“Variant”类型解决了这个问题,但现在它在后续行 IndirizzoInternet.Range.Offset(0, 6).Value = IndirizzoInternet.Address 上给了我另一个错误,运行时错误为 '438': Object does '不支持此属性或方法。我想我应该完整地查看代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 2022-08-03
    • 1970-01-01
    • 2021-01-16
    • 2021-04-11
    • 1970-01-01
    相关资源
    最近更新 更多