2014-09-04 13 views
3

我有一個VBA問題,用於爲一系列單元格創建超鏈接。使用Excel 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,ME,解決此問題
  • 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 ,我,戰俘呃我的電腦一直fluctating
  • 791957,我,我的力量吧需要更換
  • 793507,我,這是一個必須在我們發佈的產品
  • 794067,我,還有兩個產品不能很好地工作一起
  • 798445,我,這些事情需要時間

Example Table

回答

4
我能想到的是使用 HYPERLINK功能並指定值來一氣呵成所有細胞的

的最快方法: )這也將確保,你會必須循環。

超鏈接的語法是

HYPERLINK(link_location,[FRIENDLY_NAME])

瞭解它在Excel幫助或谷歌一下。

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 
+0

我從來沒見過以這種方式增加了一個公式,謝謝 - 非常快。我的例子有點通用 - 實際的應用程序在ID值的表列上,每個ID值應該有一個鏈接到查找相應報告的網站。使用這種方法,我假設我需要將值保存在單獨的(隱藏列)中以在公式中使用它們。 – Brian 2014-09-04 20:08:37

+0

'我的例子有點通用'Stackoverflow中的第一條和非常重要的規則:永遠不會浪費任何人的時間...包括你的:)現在請修改你的問題,並提出一個現實的問題... – 2014-09-04 20:10:32

+0

修改後,感謝您的輸入。 – Brian 2014-09-05 07:42:04