1/24/2019

Excel。マクロ040。ハイパーリンクを一括挿入(設定)・一括削除をマクロで時短したい【Excel VBA】

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:”をつける必要があります。

実際の記述では、一文が長くなりますので、「 _」(半角スペース+アンダーバー)を使って行継続文字で書いています。

このようにすることで、簡単に、ハイパーリンクを設定(挿入)したり、解除したりすることができますよ。