リンクを解除してアドレスを取り出す
マクロ講座53回
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