ExcelVBAマクロでハイパーリンク先アドレスを変更する方法を紹介!

スポンサードリンク

Excelでは、シート内の文字や数字を検索したり、置換したりといった作業が、「ホーム」ー「検索と選択」の中にある「検索」や「置換」というメニューで実行でき大変便利!あなたも利用されていることでしょう。Windowsなら「Ctrl+f」というショートカットキーからも利用できるので、すばやく利用できます。

また、Excelには、セル内の文字や数字にリンクを張ることもできますよね?これはハイパーリンクと呼ばれていますが、ファイル名やフォルダ名、インターネットサイトのアドレスなどの文字列に、リンク先のアドレスが記載された形。これも参照先をまとめておくときなどに重宝する機能なのですが、最新情報に書き換える時、複数あるハイパーリンク先のアドレスの一部または全てを一括して新しいものに「置換したい」という場合があると思います。

置換といえば、上で紹介した置換の方法が便利なので、これできっと対応出来る!と思ってしまうのですが、実際にやってみるとこれではうまくいかないのです。。。

ということで、書き換え作業は手作業をするはめに…。なんてことに遭遇したことありません?

書き換える対象が一つ2つならば問題はありませんが、100や200、それ以上となると、手作業していたら日が暮れてしまいます。。。単調な作業でもありますので、頭もおかしくなってしまいそう。

今回はこのハイパーリンク先を置換する作業を効率よく、ささっと片付けてしまう方法を紹介していきます!

さて、今回の問題にどう対処するか?

実はこの問題、ExcelのVBAでマクロを作ってしまうと簡単に処理できるんですよ。ハイパーリンク先を効率よく置換したいあなた!是非この方法を参考にしてみてくださいね。

このページの中では、今回紹介する○○を組み込んだExcelファイルをダウンロードできるようにしています。

これを使えば、一からExcelを作り込む必要もありませんよ。ファイルを手にした瞬間、作業スピードは一気に早まります!是非使ってみてくださいね。

では本編スタートです!

スポンサードリンク

『ハイパーリンク先アドレスを変更する』には?まずは問題を整理しよう!

今回解決するのはハイパーリンク先を変更という単純ではありますが、数が多いと大変な作業をExcelにまかせて手軽に自動で終わらせたいというものですね。

この作業を手作業で行うには、

  • ハイパーリンクがあるセルを(リンク先に飛ばないように注意して)選択し右クリック
  • 「ハイパーリンクを編集」メニューを選ぶ
  • 表示されたウインドウで「アドレス」内を書き直す

という作業を実施し、

  • 一連の作業を全ての置換すべきセルに対して実施していく

という手順をとるのが普通なのではないでしょうか。一つひとつの作業はさほど難しいものではありませんが、「アドレス」を間違えないように、大量に、早く書き換えるなんて、人間業ではありません。

ではこの手順をExcelで自動化してしまいましょう!

『ハイパーリンク先アドレスを変更する』方針をチェック!

ここでは、ハイパーリンク先アドレスを変更するという作業をExcelに実施させるためにはどうすればよいかをみていきます。一つひとつ手作業で行うには、上で書いた

この作業を手作業で行うには、

  • ハイパーリンクがあるセルを(リンク先に飛ばないように注意して)選択し右クリック
  • 「ハイパーリンクを編集」メニューを選ぶ
  • 表示されたウインドウで「アドレス」内を書き直す
    という作業を実施し、
  • 一連の作業を全ての置換すべきセルに対して実施していく

という手作業が必要でしたよね?

今回はこの手順をExcelのマクロ(VBA)をつかって自動で行っていくことにします。

VBAで記述していく作業の順序は次の通りです。

  • 置換したい文字列を指定
  • 置換後の文字列を指定
  • シート内の全てのハイパーリンクを対象に、置換したい文字列を置換後の文字列に書き換える

これをVBAでかけば今回の「ハイパーリンク先アドレスを変更する」という作業を一発で一瞬で完了することができるようになります!しかも処理はプログラムした内容に従って、いつでも何度でも実施できるので、処理を間違ってしまうということもありません!

スポンサードリンク

『ハイパーリンク先アドレスを変更する』課題をExcelで解決!

ではハイパーリンク先アドレスを変更するという課題を解決する、具体的なマクロの記述をみていきましょうね!VBAで書いたリストは次の通りです!
今回のマクロでは、Inputboxを利用して、置換する前の文字列と、置換後の文字列を指定するようにしました。

Attribute VB_Name = "Module1"
'***********************************************************
'** 仕事サクサク!定時退社のために EXCEL GO! GO!
'** (URL:https://excelgogo.net/)
'** 是非ご活用ください♪
'***********************************************************
Sub ハイパーリンクのアドレスと表示文字列を変更する()
Dim deladd As String
Dim addadd As String
Dim Lnk As Hyperlink
'
deladd = InputBox("置換前の文字列を入力して下さい", "入力")
If deladd = "" Then
    GoTo Errhandler
End If
addadd = InputBox("置換後の文字列を入力して下さい", "入力")
'
If addadd = "" Then
    GoTo Errhandler
End If
'
For Each Lnk In ActiveSheet.Hyperlinks
    Lnk.Address = Replace(Lnk.Address, deladd, addadd, compare:=vbTextCompare)
    Lnk.TextToDisplay = Replace(Lnk.TextToDisplay, deladd, addadd, compare:=vbTextCompare)
Next Lnk
'
GoTo LINE10
'
Errhandler:
MsgBox "文字列を正確に入力してください"
'
LINE10:
End Sub

まとめ

今回は、『ハイパーリンク先アドレスを変更する』という問題をExcelのマクロをつかって自動化し、作業を効率化する方法を紹介しました。

・置換したい文字列を指定
・置換後の文字列を指定
・シート内の全てのハイパーリンクを対象に、置換したい文字列を置換後の文字列に書き換える

という地味で辛い作業を、

Inputboxを使って置換したい文字列を指定し、さらに置換後の文字列を指定し、

シート内の全てのハイパーリンクを対象に、順次置換したい文字列を置換後の文字列に書き換えていくマクロにするところがポイントです。

下で紹介するExcelファイルも是非お使いくださいね。プログラムを書く時間も短縮できると思います。

 

ある機能をExcelで実現するとき、その方法は一つだけとは限りません。

ExcelVBAで使用できる機能をフルに使ってシンプルに作ることもできます。ただこれにはそれなりの勉強が必要。すぐには使えず、今すぐ問題を解決したいとい状況にはあいません。ですので、このブログで紹介するマクロは、できるだけ簡単なもの、VBAにそう詳しくなくても読めそうなもの、手を加えやすいものになるように心がけています。

マクロって難しそう、と敬遠していた方にマクロって意外とお手軽ね!と感じていただき、これを応用すればあの作業も自動化できるかも!と次のステップやアクションにつなげていただければと思います。

Excelのスキルを一気に向上させて、ライバルに差をつけたい、仕事を一気にさばいてスピードアップしたい、スキルを身に着けて転職や就職に役立てたいと思ったあなた!ぜひ下のボタンをクリックしてください!
募集締め切りが迫っているので、期間限定で「短期間で実力の向上が見込めるお手頃な方法」を紹介していますよ。

ホントは管理人Goも早く知りたかった!オンラインブートキャンプで、
見やすいデータをより早く仕上げる Excel術をマスターしよう!

 

『ハイパーリンク先アドレスを変更する』Excelマクロをプレゼント

今回紹介したInputboxを使って

  • 置換したい文字列を指定し、さらに置換後の文字列を指定。
    さらに
  • シート内の全てのハイパーリンクを対象に、置換したい文字列を置換後の文字列に書き換える

という機能をもたせたマクロを実装したExcelファイル、プログラムを記載したbasファイルが下からダウンロードできます。

 

お好きな形式のファイルをダウンロードして、
実際に動かしてみたり、あなたの課題にあわせてExcelを調整して作業時間短縮、効率化に役立ててみてください!

basファイルって何?どう使うの?という方やマクロはどのようにして実行するの?と疑問に思った方は、関連記事もチェックしてみてくださいね。


 

この記事が気に入ったら
いいね!しよう

最新情報をお届けします

Twitter でExcel GO! GO!をフォローしよう!

スポンサードリンク

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

話題をチェック!

  1. 2018-11-1

    Excelマクロ(VBA)で複数のシート上のグラフに同一の処理を行うには?

    Excelファイル内に複数のシートがあり、この中にグラフがいくつも入っているとします。 これら…
  2. 2018-9-30

    Excelの関数を使ったデータ比較法!INDIRECTとMATCHを活用する!

    最新データと一週間前のデータにどんな違いがあるのか比較してチェックしたい! でも、ひとつひとつ…
  3. 2018-7-16

    Excel マクロ(VBA)でグラフ(散布図)を大量自動作成!

    Excelはグラフを簡単につくれるのも魅力ですが、つくらなければいけないグラフが多いと、この作業も大…
ページ上部へ戻る