Home » エクセルマクロ・Excel VBAの使い方 » ユーザー定義関数 » ハイパーリンクのリンク先URL等を取得するユーザー定義関数

ハイパーリンクのリンク先URL等を取得するユーザー定義関数

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

Excelには、ハイパーリンクを設定する「HYPERLINK」という名前の、ワークシート関数が存在しています。

ハイパーリンクのリンク先URL等を取得するユーザー定義関数

引数を2つ指定できる関数で、第1引数・リンク先にはURLを指定し、第2引数・別名にはセルに表示する文字列を指定します。

[スポンサードリンク]

リンク先のURL等を取得するユーザー定義関数

この逆を行う関数が必要になり、VBA(Visual Basic for Applications)でユーザー定義関数を作りました。

セルにハイパーリンクが設定されているときに、リンク先のURLか、セルに表示されている文字列を返す関数です。

Function HYPERLINK_REV( _
 セル As Range, _
 Optional 別名 As Boolean = False) As String
' ハイパーリンクされているセルから文字列・アドレスを返す
' 引数:セル=ハイパーリンクを含むセル
' 引数:別名=TRUE=セルに表示されている文字列, FALSE=アドレス

 With セル.Hyperlinks(1)
  Select Case 別名
   Case True
    HYPERLINK_REV = .TextToDisplay
   Case False
    HYPERLINK_REV = Replace(.Address, "mailto:", "")
  End Select
 End With

End Function

例えば、A1セルにハイパーリンクが設定されているときに、どこかのセルに、
 =HYPERLINK_REV(A1, TRUE)
と入力すると、セルに表示されている文字列が返され、
 =HYPERLINK_REV(A1, FALSE)
または、
 =HYPERLINK_REV(A1)
と指定すると、リンク先のURLが返されます。

ユーザー定義関数の解説

ハイパーリンクはExcel VBA的にはRangeオブジェクトのHyperlinkオブジェクトです。

HyperlinkオブジェクトのAddressプロパティでURLを、TextToDisplayプロパティで文字列を取得できます。

引数・セルで渡されたRangeオブジェクトから、Hyperlinkオブジェクトを取得して、
 With セル.Hyperlinks(1)

引数・別名にTrueが指定されたときは、Hyperlink.TextToDisplayプロパティで取得できる、表示されている文字列を返し、
  Select Case 別名
   Case True
    HYPERLINK_REV = .TextToDisplay

引数・別名がTrueだったときは、Hyperlink.Addressプロパティで取得したアドレスを返します。
   Case False
    HYPERLINK_REV = Replace(.Address, "mailto:", "")
なお、電子メールアドレスにハイパーリンクが貼られている場合、先頭に付加される「mailto:」という文字列が邪魔でしたので、Replace関数を使って文字列「mailto:」を空白文字列に置換する処理を入れています。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » ユーザー定義関数 » ハイパーリンクのリンク先URL等を取得するユーザー定義関数

「ユーザー定義関数」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.