Excelのハイパーリンク、一つひとつ右クリックして「ハイパーリンクの編集」を開いてURLを確認していませんか?
その作業、今日で終わりにしましょう。
今回は、VBAで「大量のハイパーリンクを一括で操作(URL抽出・削除・追加)する方法」を紹介します。
1. リンク先(URL)を隣のセルに取り出す
これが一番使いどころの多い機能です。
青文字のリンクから、URLの文字列だけを抜き出します。
以下のコードをVBAの標準モジュールにコピペしてください。
Sub URLを抽出する()
' 選択したセルの右隣にURLを表示します
Dim rng As Range
' エラーが起きても止まらないようにする(リンクがない場合など)
On Error Resume Next
For Each rng In Selection
' ハイパーリンクが設定されている場合のみ処理
If rng.Hyperlinks.Count > 0 Then
' AddressプロパティでURLを取得
rng.Offset(0, 1).Value = rng.Hyperlinks(1).Address
End If
Next rng
On Error GoTo 0
MsgBox "抽出完了しました!", vbInformation
End Sub
使い方: URLを抜き出したいセル範囲を選択して、このマクロを実行するだけです。
Hyperlinks(1).Address で指定したハイパーリンクのアドレスを取得できます。
2. ハイパーリンクを一括で削除する
次は「セルをクリックしようとしたら、勝手にブラウザが開いてイライラする!」という時に使えるコードを紹介します。
Sub ハイパーリンクを全削除()
' 選択範囲のリンクを解除します(文字は残ります)
Selection.Hyperlinks.Delete
MsgBox "リンクを削除しました。", vbInformation
End Sub
ポイント: Delete メソッドを使うことで、リンク機能だけを綺麗サッパリ消し去ります。書式設定(青文字・下線)が残る場合は、別途「書式のクリア」をすれば完璧です。
3. 文字列にハイパーリンクを一括追加する
逆に、URLの文字列が大量にあって、それをすべて「クリックできる状態」にしたい場合もありますよね。
Sub リンクを一括設定()
Dim rng As Range
For Each rng In Selection
' セルの値を使ってハイパーリンクを設定
If rng.Value <> "" Then
ActiveSheet.Hyperlinks.Add _
Anchor:=rng, _
Address:=rng.Value
End If
Next rng
MsgBox "すべてリンク付きに変換しました", vbInformation
End Sub
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。
リンク
リンク

コメント