訪問して頂きありがとうございます。まさふくろーです。
今回は、ハイパーリンクからURL情報を取得する方法をご紹介します。
目次
ハイパーリンクからURL情報を取得する

作成手順
VBEの起動
起動方法は、VBE(Visual Basic Editor)の起動手順まとめをご覧ください。
標準モジュールの作成
①「挿入」を選択⇒②「標準モジュール」を選択し、標準モジュールを作成します。

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

入力するコードは以下になります。
|
1 2 3 4 5 6 7 |
Function GetHyperlink1(Target As range) As String If Target.Hyperlinks.Count > 0 Then GetHyperlink1 = Target.Hyperlinks(1).Address End If End Function |
| 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 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 |
最後まで読んでいただき、ありがとうございました!
本のまとめ記事はこちら

