エクセルでハイパーリンクのリンク先URL文字列を簡単に抽出する方法 – VBAでの実践ガイド
1. 概要
エクセルのハイパーリンク文字列は、他のウェブページやファイルに簡単にアクセスできる便利な機能ですが、ハイパーリンクのリンク先URLにある文字列をセルに表示したい場合、直接その機能はないのでVBAを作成するしかありません。この記事では、VBA(Visual Basic for Applications)を使って、A列にあるハイパーリンクからリンク先のURLの文字列をB列に表示する方法を説明します。
2. VBAとは?
VBA(Visual Basic for Applications)は、Microsoft Office(ExcelやWordなど)に内蔵されているプログラミング言語です。VBAを使うと、エクセルでの作業を自動化したり、独自の機能を作成したりできます。今回は、セル内のハイパーリンクからURLを取得する関数を作成して活用する方法を見ていきます。
3. 準備:セキュリティ設定と事前確認
セキュリティ設定の確認
VBAを使うためには、エクセルの「マクロ」を有効化する必要があります。マクロが無効化されている場合、以下の手順で有効化してください:
1. エクセルのファイルタブをクリックし、「オプション」を選択。
2. 左側のメニューから「セキュリティセンター」→「セキュリティセンターの設定」を開きます。
3. 「マクロの設定」を選び、「警告を表示してすべてのマクロを無効にする」か「すべてのマクロを有効にする」に設定します。
• 注意:「すべてのマクロを有効にする」はセキュリティリスクがあるため、信頼できるファイルでのみ使用してください。
4. ハイパーリンクURLを取り出す手順
以下の手順で、リンク先URLをセルに表示するためのVBAコードを準備していきます。
手順1: VBAエディタの起動
1. エクセルを開き、A列にリンクが設定されたシートに移動します。
2. 「Alt」キーと「F11」キーを同時に押して、VBAエディタを起動します。
手順2: 新しいモジュールの挿入
1. VBAエディタの上部メニューから「挿入」→「標準モジュール」を選択します。
• これで新しいモジュールが作成され、ここにコードを入力できます。
手順3: コードの入力
以下のコードをコピーして、新しいモジュールに貼り付けます。
Function LNK(rng As Range) As String
On Error Resume Next ' エラーが発生した場合、次の行に進む
LNK = rng.Hyperlinks(1).Address ' セル内の最初のハイパーリンクのアドレスを取得
On Error GoTo 0 ' エラー処理を元に戻す
End Function
コード入力後、「Ctrl + S」で保存してください。
手順4: 関数の呼び出し
1. エクセルに戻り、リンク先URLを表示したいセル(例:B1セル)に次の数式を入力します。
=LNK(A1)
• A1セルにハイパーリンクが設定されている場合、そのURLがB1セルに表示されます。
手順5: 結果の確認
A列の複数のセルにハイパーリンクが設定されている場合、B列に数式をコピーするだけで、対応するリンク先URLを一括で抽出できます。
5. VBAコードの詳細解説
コードの仕組み
• Function LNK(rng As Range) As String
新しい関数「LNK」を定義し、セル範囲 rng を引数として受け取ります。この関数は String 型のURLを返します。
• On Error Resume Next
エラーが発生した場合、エラーを無視して次の行に進む指示です。例えば、セルにハイパーリンクが含まれていない場合などでもエラーが表示されないようにします。
• LNK = rng.Hyperlinks(1).Address
rng に含まれる最初のハイパーリンクのURLを取得し、LNK 関数の返り値として設定します。
• On Error GoTo 0
エラー無視の設定を解除します。これ以降のコードでエラーが発生した場合、通常通りエラーメッセージが表示されます。
6. 応用例
応用例1: 特定の文字列を含むURLだけを抽出
特定のキーワード(例:「google.com」)を含むURLのみを抽出するには、以下のコードを使用します。
Function LNK_GoogleOnly(rng As Range) As String
On Error Resume Next
If InStr(rng.Hyperlinks(1).Address, "google.com") > 0 Then
LNK_GoogleOnly = rng.Hyperlinks(1).Address
Else
LNK_GoogleOnly = "該当なし"
End If
On Error GoTo 0
End Function
応用例2: 複数シートにわたるURLの抽出
複数のシートにあるハイパーリンクのURLを一括でリスト化する場合、各シートのデータをループして収集するVBAマクロを作成することも可能です。
7. よくある質問とトラブルシューティング
• エラーが表示される場合
セルにハイパーリンクが設定されていない場合、空白が返されます。エラーが発生した場合は、該当セルにハイパーリンクが設定されているかを確認してください。
• セキュリティ設定の警告が表示される
マクロの実行許可が必要です。事前に「マクロの有効化」を確認してください。
SNS Xなどで私に問い合わせしても解説します。
8. まとめ
VBAを使用すると、エクセル内のハイパーリンクからリンク先のURLを簡単に抽出でき、業務の効率化に役立ちます。大量のリンク管理やデータ収集に適用できるため、ぜひ活用してみてください。