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

Bri*_*ian 3 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
Run Code Online (Sandbox Code Playgroud)

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

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

我的问题是当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,我,这些事情需要时间

示例表

Sid*_*out 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
Run Code Online (Sandbox Code Playgroud)