ハイパーリンクを解除してアドレスを取り出すマクロ Excel 2013 マクロ講座
Excel 2013 マクロ講座 53回
ハイパーリンクを解除してもアドレスは保存
以前、ハイパーリンクを解除するマクロは、ハイパーリンクをまとめて削除するマクロで紹介しました。
今回は、ハイパーリンクを解除したいんだけど、設定してあったアドレスは、残しておきたいというケースです。
はじめに、ハイパーリンクからアドレスだけを取り出すマクロを、次にハイパーリンクを解除して隣にアドレスを抽出するマクロの2つを紹介します。
(サンプルファイルは、こちらから マクロ講座53回サンプルデータ)
対象範囲のハイパーリンクを解除するには
ではまず、3行マクロ講座 20回のおさらいです。
アクティブシートのハイパーリンクを解除するマクロは、
アクティブシートのハイパーリンクを解除するマクロは、
Sub アクティブシートのハイパーリンク削除()
ActiveSheet.Hyperlinks.Delete
End Sub
で、シート上のハイパーリンクすべてが削除されます。こちらは、選択範囲のセルに設定してあるハイパーリンクを解除します。
Sub 選択したハイパーリンク削除()
Selection.Hyperlinks.Delete
End Sub
どちらも、Hyperlinksコレクションに対してDeleteメソッドを実行して、対象範囲のすべてのHyperlinkオブジェクトを一括で解除するマクロです。。セルに設定されたアドレスを隣のセルに書き出すには、
HyperlinkオブジェクトのRangeプロパティでは、そのハイパーリンクが設定されている
セルを表すRangeオブジェクトが取得できます。


はじめに、リンクに対して、変数の宣言をします。
Hyperlinkのhが使われることが多いですが、ここではわかりやすくするためにリンクとしましょう。
Hyperlinkのhが使われることが多いですが、ここではわかりやすくするためにリンクとしましょう。
Dim リンク As Hyperlink個々のリンクのアドレスを取り出すためには、For Each 〜 Next構文を使いループします。 もうお馴染みですね。
コードを構文に当てはめると、
これは、Rangeプロパティでハイパーリンクが設定されているセルを表すRangeオブジェクトが取得できるのですから、

Sub ハイパーリンクを隣のセルに抽出()
Dim リンク As Hyperlink
For Each リンク In Selection.Hyperlinks
実行したい処理
Next リンク
End Sub
実行したい処理は、アドレスを隣に取り出すということですね。これは、Rangeプロパティでハイパーリンクが設定されているセルを表すRangeオブジェクトが取得できるのですから、
リンク.Range.Offset(0, 1).Value = リンク.Addressとできます。

コードを実行すると、


ハイパーリンクを隣の列に抽出することができました。


コードは、
Sub ハイパーリンクを隣のセルに抽出()
Dim リンク As Hyperlink
For Each リンク In Selection.Hyperlinks
リンク.Range.Offset(0, 1).Value = リンク.Address
Next リンク
End Sub
ハイパーリンクを解除してもアドレスを抽出
アドレスを隣に取り出して、ハイパーリンクは削除するコードに変更します。
リンク.Deleteを追加するだけです。
リンク.Deleteを追加するだけです。
Sub ハイパーリンクを解除して抽出()
Dim リンク As Hyperlink
For Each リンク In Selection.Hyperlinks
リンク.Range.Offset(0, 1).Value = リンク.Address
リンク.Delete
Next リンク
End Sub

スポンサーリンク
スポンサーリンク