使用Excel VBA创建数千个超链接的有效方法

时间:2014-09-04 18:59:14

标签: excel vba excel-vba

我有一个VBA问题,可以为一系列单元格创建超链接。

在我的应用程序中,我有一个数据表,其中一列列出了我想要添加超链接的ID,以打开该ID的相应报告/页面。

在以下所有情况下,假设所有单元格都填充了数字ID。

我目前使用的代码非常类似于以下内容(本例简化):

Dim r As Range, c As Range
Set r = Range("C1:C60000")
For Each c In r
   ActiveSheet.Hyperlinks.add anchor:=c, address:="http://www.url.com?address=" &  c.value
Next c

但是,随着范围变大 - 此代码执行的时间变得非常长。在URL始终相同的情况下,以下代码运行得非常快。

 Dim r as Range
 set r = Range("A1:A60000")
 r.Hyperlinks.add anchor:=r, address:="http://www.url.com"

我的问题是,当URL不同时,特别是如果它们合并来自单元格的数据,那么有一种方法比我目前正在做的更有效。

任何帮助或见解将不胜感激。 谢谢,

示例数据(以CSV格式和Excel表格截图),我需要能够以" http://www.urltest.com/sample?id=[ID]"的格式向整个第一列添加超链接。其中[ID]是单元格中的值。

  • 号,受让人,名称
  • 383087,我,解决此问题
  • 403749,你,编译器存在问题
  • 403856,您,显示器存在问题
  • 440912,我,先解决三件事
  • 458523,另一个人,"你,我,这个问题"
  • 476182,你,天空中的一颗星
  • 485834,你,三只小熊
  • 499569,你,我的键盘不能正常工作
  • 500552,我,我的鼠标不起作用
  • 516824,我,我无法登录
  • 523654,另一个人,计算机电缆太多
  • 536632,别人,我有PHP问题
  • 556012,我,我的VBA有问题
  • 561275,你,我有两个C ++问题
  • 569014,我,我的Perl脚本不起作用
  • 572658,你,JavaScript让我头疼
  • 667911,我,我的耳机已断开连接
  • 704432,我,我需要软件升级
  • 721637,我,我的笔记本电脑太慢了
  • 735784,我,您的服务器拒绝我的连接
  • 765477,我,我不知道连接到哪个端口
  • 778808,我,我的XML有问题
  • 788865,我,我的电脑电源一直在波动
  • 791957,我,我的电源栏需要更换
  • 793507,我,在发布产品之前必须这样做
  • 794067,我,有两种产品不能很好地协同工作
  • 798445,我,这些事情需要时间

Example Table

1 个答案:

答案 0 :(得分:5)

我能想到的最快方法是使用HYPERLINK函数并一次性将值分配给所有单元格:)这也确保您将必须循环。

Hyperlink的语法是

HYPERLINK(link_location,[friendly_name])

在Excel帮助或Google中了解它。

ADDRESS(ROW(),COLUMN()))为您提供当前单元格的地址。

试试这个

Sub test_simple_diffurl()
    Dim r As Range

    Set r = Range("C1:C60000")

    r.Formula = "=HYPERLINK(""http://www.url.com?address="" & ADDRESS(ROW(),COLUMN()),""Test with "" & ADDRESS(ROW(),COLUMN()))"
End Sub