【EXCEL VBA】ハイパーリンクからURL情報を取得するには?

訪問して頂きありがとうございます。まさふくろーです。

今回は、ハイパーリンクからURL情報を取得する方法をご紹介します。

ハイパーリンクからURL情報を取得する

作成手順

VBEの起動

起動方法は、VBE(Visual Basic Editor)の起動手順まとめをご覧ください。

標準モジュールの作成

①「挿入」を選択⇒②「標準モジュール」を選択し、標準モジュールを作成します。

 

VBAコードの入力

VBE(Visual Basic Editor)のピンク枠の部分に、VBAコードを入力していきます。

 

 

入力するコードは以下になります。

1 ユーザー定義関数の記述。
引数:セルの範囲(Range型)、戻り値:文字列型。
3 指定したセル範囲にハイパーリンクが設定されているかの判断を行う。
4 ハイパーリンクが設定さている場合、URL情報を取得し、戻り値に返す。

関数の呼び出し

「C1」セルに「=GetHyperlink1(A1)」と入力します。

Enterキーを押します。

式をコピーする

「C1」セルを選択します。

セルの右端にフォーカスをあて「+」マークにしたのち、下にドラッグして式をコピーします。

解説

Functionプロシージャ

構文 Function 関数名(引数1 As データ型1[,引数2 As データ型2,・・・]) As データ型
       計算のための処理
       関数名 = 戻り値
End Function
解説 Functionプロシージャは、戻り値(計算結果の値)を返すことができるプロシージャなので、関数として利用できる。
「関数名」には、自分で独自の名前を指定する。
「()」の後ろのデータ型には、関数の戻り値のデータ型を指定する。
戻り値となるデータの種類から、適切なデータ型を選択する。
例えば、戻り値が整数なら「Integer」を選ぶ。
関数名の「()」の中では、関数内で用いる「引数」と、その「データ型」を指定し、関数で計算をする対象を決める。
引数名は独自の名前を設定してよい。
計算対象のデータの種類から、適切なデータ型を選ぶ。
引数とデータ型は、「,」(カンマ)で区切って複数指定できる。
「計算のための処理」には、引数を用いた計算の内容を記述する。
「関数名=戻り値」では、「関数名」には指定した名前を、「戻り値」では計算結果の値を指定する。
作成したFunctionプロシージャは、「ユーザー定義関数」としてワークシート上で使用できる。
ユーザー定義関数として使用するには、Functionプロシージャを標準モジュールに作成する。
ハイパーリンクのURL情報を取得する関数。戻り値は、文字列型。

Function GetHyperlink1(Target As range) As String

     If Target.Hyperlinks.Count > 0 Then
        GetHyperlink1 = Target.Hyperlinks(1).Address
     End If

End Function

Hyperlinksオブジェクト

解説 ワークシートまたはセル範囲のハイパーリンクのコレクションを表す。
ワークシート 1 上のハイパーリンクで "Microsoft" という単語を含むものを調べる。
For Each h in Worksheets(1).Hyperlinks
      If Instr(h.Name, "Microsoft") <> 0 Then h.Follow
Next

[Hyperlinks]Countプロパティ

構文 Hyperlinks.Count
解説 コレクションに含まれるオブジェクトの数を返す。
指定したセルにハイパーリンクが含まれる場合は、メッセージを表示する。
If Target.Hyperlinks.Count > 0 Then MsgBox "ハイパーリンクです。"

[Hyperlinks]Addressプロパティ

構文 Hyperlinks(Index).Address
引数 Index:「1」と指定した場合:1番目に見つかったハイパーリンクを表す。
解説 ハイパーリンクのURL情報を取得する。
A2セルのURL情報を取得する。(セル範囲が単一セルの場合)
GetHyperlink1 = Range("A2").Hyperlinks(1).Address
A1~A2セルの範囲から2番目のURL情報を取得する。(セル範囲が複数セルの場合)
GetHyperlink1 = Range("A1:A2").Hyperlinks(2).Address

最後まで読んでいただき、ありがとうございました!