- ベストアンサー
Excelでハイパーリンクを張るマクロ
お世話になってます。 現在、A列にランダムな5桁の数字とハイフン(例:11-234)が5行目まで入っているとします。(ハイフンの位置は固定) Excelの表示上は、 11-234 11-353 ・・・ と表示させといて、 その文字列をクリックすると、その文字列が含まれるリンク先にジャンプできるマクロを作成したいと思っております。 たとえば、A1に11-234とあれば、表示上は11-234で、リンク先がhttp://www.xxxxxxx.com/aaa11-234bbb/ccc.cgi というように。 それが、A列に複数ある状態です。 これを一括でハイパーリンク化できないでしょうか。 ご教授願います。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
そのまま使うのではなくて、応用を考えましょうということで・・・。 Sub linkadd() For Each c In Selection ActiveSheet.Hyperlinks.Add Anchor:=c, Address:="http://www.xxxxxxx.com/aaa" & c.Value & "bbb/ccc.cgi" Next c End Sub
その他の回答 (2)
- fujillin
- ベストアンサー率61% (1594/2576)
ご質問とは違う方法ですが、参考までの例として… ハイパーリンクは設定せずに、ダブルクリックでそのセルの内容を、ご質問文のようなURLに変換して、ブラウザに表示させるマクロの一例です。 この方法だと、データ数が増減したり、値を変更したりしても、いちいちリンクの設定をし直す必要がありません。 とりあえず、対象はA列のみで、「nn-nnn」(nは数字)形式の値にのみ反応するようにしてあります。 (個人的に、URLが自動的にハイパーリンクになるのが嫌いで、この機能を切っているのですが、時として、リンクしてくれたほうがいい場合もあるので、このような方法を使ったりしています) <シートモジュールで> Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Column <> 1 Then Exit Sub With CreateObject("VBScript.RegExp") .Pattern = "\d\d-\d\d\d" If .test(Target.Text) And Len(Target.Text) = 6 Then Disp (Target.Text) End With End Sub Sub Disp(str As String) Dim url As String Static IE As Object url = "http://www.xxxxxxx.com/aaa" & str & "bbb/ccc.cgi" On Error Resume Next IE.Navigate (url) If Err = 91 Or Err = -2147417848 Then Set IE = CreateObject("InternetExplorer.Application") IE.Navigate (url) End If On Error GoTo 0 IE.Visible = True End Sub Win環境で、ブラウザはIEを想定。 リンクの度に新しくIEを立上げると数多く開いたりするので、既に開いているIEがある場合は、そこに表示させるようにしています。
お礼
ご丁寧にありがとうございました。 今回は別の方のアドバイスを利用させていただきました。 またよろしくお願いいたします。
- chem_taro
- ベストアンサー率32% (33/101)
「excel VBA ハイパーリンク」でごっそりでてきましたよ。 http://www.asahi-net.or.jp/~zn3y-ngi/YNxv212.html#8 http://okwave.jp/qa3203065.html
補足
回答ありがとうございます。 最初のリンク先は、URLが固定でした。 二つめは10回までしか繰り返しができていません。 もし500行あった場合はどうすればいいのか。 1000回まで繰り返すようにしとくともし数行しかない場合無駄な動きになりそうです。 A1の文字列をURLに組み込んで、ハイパーリンクしたいのです。
お礼
すみません、マクロは全くの初心者なもので前回のご回答はよくわかりませんでしたが、今回教わったマクロでばっちりできました!ありがとうございました。 リンク化したいセルを複数選択し、実行してもすべて問題なかったです。 ありがとうございました。