• 投稿者:
  • 投稿コメント:0件のコメント
  • 投稿カテゴリー:Excel
  • 投稿の最終変更日:2024年11月7日

エクセルでハイパーリンクのリンク先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を簡単に抽出でき、業務の効率化に役立ちます。大量のリンク管理やデータ収集に適用できるため、ぜひ活用してみてください。

コメントを残す