【问题标题】:Excel VBA - Set Hyperlink Display TextExcel VBA - 设置超链接显示文本
【发布时间】:2016-03-27 20:11:17
【问题描述】:

简介:我导出营销报告以获得点击率,这些报告提供了我公司网站上产品的 URL。我想要一个将产品标题显示为显示文本的列,同时将文本保持为超链接。这是为使用带有产品标题/超链接的列创建邮件合并的数据源。

我有一个像这样设置的 VBA 宏:

Sub ClickableLinkTitle()
'Dim List As Integer, result As String
'Range("$G$2:$G$158").value = List
'Range("$H$2:$H$158").value = result

Dim i As Long
Dim j As Integer
Dim value As String

j = 7

For i = 2 To Rows.Count
    If Not IsEmpty(Cells(i, 6)) Then
        value = Cells(i, 6).value

        If value = "http://example.com/products/db.asp?prodID=1" Then
            Cells(i, j).value = "Product 1"
        ElseIf value = "http://example.com/products/db.asp?prodID=2" Then
            Cells(i, j).value = "Product 2"
        ElseIf value = "http://example.com/products/db.asp?prodID=2" Then
            Cells(i, j).value = "Product 3"

        '(ect....until Product 400-and-something)

        End If              
    End If
Next i
End Sub

这会产生一个编译错误,说明过程太长。我已经把它分解成多个潜艇,但我不想继续这样做。它也非常手动,几乎违背了创建宏的目的。但既然我已经创建了它,并且建立了 url 和产品标题的关系,我不想把它扔掉。

问题:在我的公司网站上创建一个显示作为产品超链接的产品标题的列的最有效方法是什么?

头脑风暴: 从我的宏中提取 url 和产品标题并将它们放入两个单独的列中,然后找出一个宏来将两者结合起来。

Ping url 并从 html 标题标签中检索页面标题以显示为产品标题。

【问题讨论】:

  • 我会尝试在该列中找到最后使用的行,而不是搜索工作表的整个 1048576 行。类似于With Sheets("Sheet1") lastRow = .Range("F" & .Rows.Count).End(xlUp).Row End With
  • value 的选择案例也可能有帮助
  • @NinjaLlama 我真的不明白这会做什么?不过还是谢谢你的建议。
  • 它将确定使用的最后一行,然后您可以在 For i = 2 To Rows.Count 中使用该存储值,而不是循环直到 Rows.Count
  • 我在 F 列中添加了 40000 个条目,然后将您的代码与我的代码相匹配。我的建议将根据您实际拥有的数据行数而递减收益,但使用 40000 个条目,我的代码运行时间为 0.39 秒,而您的代码运行时间为 3.32 秒。

标签: vba excel hyperlink


【解决方案1】:

如果您的产品名称遵循您展示的模式,您可以这样做

For i = 2 To Rows.Count
    If Not IsEmpty(Cells(i, 6)) Then    
            Cells(i, j).value = Replace(Replace(Value,"http://company.com/",""), "-", " ")    
    End If
Next i

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-28
  • 2018-03-09
  • 1970-01-01
相关资源
最近更新 更多