Excel。マクロ040。ハイパーリンクを一括挿入(設定)・一括削除をマクロで時短したい
<Excel VBA:マクロ>
一覧表などのメールアドレスにハイパーリンクを設定したいとか、ハイパーリンクの設定をまとめて削除したりする場合、ちょっと面倒だったりします。例えば、次のような表があります。
C列にメールアドレスを入力すると、基本的設定では、ハイパーリンクが設定されるようになっているので、ハイパーリンクでお馴染みの、「青い文字で下線」という設定が自動的にされるようになっています。
入力直後に表示される、オートコレクトオプションの設定で、元に戻すをその都度選択するのも面倒ですね。
範囲選択して一括で削除を行うこともできますが、今回は、Excel VBAでマクロをつくって、時短するにはどのようにしたらいいのか、考えてみましょう。
Sub ハイパーリンク解除()
Dim i As Long
For i = 2 To 5
Range("c" & i).Hyperlinks.Delete
Next
End Sub
では、実行してみましょう。
このように、簡単に削除することができました。
Excel VBAを簡単に説明しておきましょう。
Dim i As Long
お馴染みの変数宣言ですね。基本的に、データが複数ある場合は、繰り返し処理を行うことになるので、変数が必要になります。
そして、
For i = 2 To 5~Next
お馴染みのFOR TO NEXTですね。
2から5まで繰り返すという処理をさせるわけですが、何を処理させるのかというと、
Range("c" & i).Hyperlinks.Delete
読めちゃうと思いますが、C2~C5までのセルに設定されているハイパーリンクを、Delete。すなわち、解除することができます。
たった一行で、ハイパーリンクを解除することができました。
さて、今度は、設定したい場合ですね。
TEXTファイルやCSVファイルのデータをインポートしたものの、ハイパーリンクの設定はされていないわけですね。
そこで、今度は、一括設定したいわけです。
これこそ、時短のためには、Excel VBAが活躍しますね。一軒ずつ設定していたのでは、大変ですね。
Excel VBAでつくってみましょう。
Sub ハイパーリンク挿入()
Dim i As Long
Dim lastrow As Long
lastrow = Range("a1048576").End(xlUp).Row
For i = 2 To lastrow
ActiveSheet.Hyperlinks.Add anchor:=Range("c" & i), _
Address:="mailto:" & Range("c" & i).Value
Next
End Sub
まずは、実行してみましょう。
該当するセルにハイパーリンクを設定することができました。
それでは、確認しておきましょう。
お馴染みの変数宣言ですね。lastrowには、データ最終行をいれます。
Dim i As Long
Dim lastrow As Long
Excelシートの最終行は1048576なので、そこから、一番上。つまりデータがある行までジャンプさせて、そのRow。つまり行番号を変数にいれます。
lastrow = Range("a1048576").End(xlUp).Row
For i = 2 To lastrow~Next で繰り返し処理をします。
ActiveSheet.Hyperlinks.Add anchor:=Range("c" & i),Address:="mailto:" & Range("c" & i).Value
Hyperlinks.Addを使うと、ハイパーリンクを挿入することができます。
anchorは、ハイパーリンクの挿入先を指定することができます。
セルに挿入する場合には、Rangeオブジェクトを指定します。
Address:="mailto:" & Range("c" & i).Value
Addressは、リンク先のアドレスを指定します。
今回は、メールアドレスなので、先頭に、”mailto:”をつける必要があります。
実際の記述では、一文が長くなりますので、「 _」(半角スペース+アンダーバー)を使って行継続文字で書いています。
このようにすることで、簡単に、ハイパーリンクを設定(挿入)したり、解除したりすることができますよ。