【Outlook VBA】メール本文中の”\\”や”file:”や”http”から始まる文字列へハイパーリンクを一括挿入する

メール本文中の”\\”や”file:”や”http”から始まる文字列へハイパーリンクを一括挿入したいときはないでしょうか。

そんな時に悩むのが、

メール本文中の”\\”や”file:”や”http”から始まる文字列へハイパーリンクを一括挿入したいが方法がわからない

ですよね。

今回は、

メール本文中の共有サーバなどのネットワークパス”\\”やOffice系ドキュメントのパス”file:”から始まる文字列を一発でハイパーリンクにする方法

をご紹介します。

マクロを設置する下準備をする。

マクロを設置するための下準備をしましょう。

以下を参考にVBAコードを配置する場所を表示させます。

Outlook VBAをはじめよう!初心者向け手引き

テキスト形式を選択している方はハイパーリンクは表示されませんので、HTML形式かリッチテキスト形式に変更をお願いします。

この設定が終えたら一度Outlookを再起動します。

マクロを登録する

次にマクロを登録します。

「開発」タブ>「Visual Basic」を押します。

「Visual Basic Editor」にて、[Project1] > [Microsoft Outlook Objects] > [ThisOutlookSession] を開きます。

右のコードエリアへ、以下のコードを貼り付けて保存します。

Public Sub パス文字列にハイパーリンク追加()
    
    'ハイパーリンクの条件を定義します。
    '「http」を指定。「http」や「https」に該当。
    Const myHyperlink1 = "http"
    Const myHyperlink2 = "\\"
    Const myHyperlink3 = "file:"
    
    Dim HyperLinkList As Variant
    Dim objWord As Object
    Dim objSearchWord As Object
    
    '本文のオブジェクトを取得
    Set objWord = ActiveInspector.WordEditor
    Set objSearchWord = objWord.Range
    
    HyperLinkList = Split(objSearchWord, vbCr)
   
    
    'myHyperlinkのワードを探し一致していればハイパーリンクを挿入
    
    For i = 0 To UBound(HyperLinkList)
        If InStr(HyperLinkList(i), myHyperlink1) Or InStr(HyperLinkList(i), myHyperlink2) Or InStr(HyperLinkList(i), myHyperlink3) Then
            While objSearchWord.Find.Execute(FindText:=HyperLinkList(i), MatchWholeWord:=False, Forward:=True) = True
                  objWord.Hyperlinks.Add Anchor:=objSearchWord, Address:=HyperLinkList(i)
                  objSearchWord.Collapse Direction:=wdCollapseEnd
            Wend
            
        End If
    Next

    'オブジェクトの開放
    Set objWord = Nothing
    Set objSearchWord = Nothing
    
End Sub

メールを新規作成しhttpから始まる文字列を入れテストする

メールを新規作成し”http”以外にも”\\”やOffice系ドキュメントのパス”file:”から始まる文字列を入れ確認してしてみましょう。

次にoutlook本体に戻り「開発」タブの「マクロ」>「パス文字列にハイパーリンク追加」を押下します。

はい!きれいにハイパーリンクが挿入されましたね。日本語交じりのURLもOKです!

会議通知に対しても同じくハイパーリンクを挿入することが可能です!

さいごに

いかがでしょうか。

今回は、

メール本文中の共有サーバなどのネットワークパス”\\”やOffice系ドキュメントのパス”file:”から始まる文字列を一発でハイパーリンクにする方法

についてまとめました。

業務の中でハイパーリンクを付与する作業は意外と多いものですので、このVBAで楽にできればと思っています。

次回はハイパーリンクを一括削除する方法をご紹介したいと思います。

【Outlook VBA】メール本文中のハイパーリンクを一括で削除する

【Outlook VBA】ハイパーリンクを一括追加/一括削除する方法



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。



タカヒロ

タカヒロ
実質無料で読めるExcelVBA本についてまとめました。
もしVBA本購入を検討されていたら、どれだけお得か確かめてみてください。

【¥0】実質無料のExcelVBAおすすめ本25選!初級~中級まで網羅!

5 件のコメント

  • 返信いただきありがとうございます!
    無事表示を変えることができたのですが、一部元の表示列が残ってしまいます(以下の通り)。
    また、表示を変えなくても、マクロを実行した際、もともと文字列全部が青字になりませんでした。
    ハイパーリンクは無事機能しているのですが、表示がハイパーリンク化されているように見えません。原因がもし、わかりましたら教えていただけますと幸いです。

    (例)
    ¥¥りんごフォルダ¥あいうえおかきくけこさしすせそ
    にマクロ実行

    ¥¥りんごフォルダ¥までしか青字になりません。リンクは正常に飛びます。

    (例2)
    上記のハイパーリンクの表示を”リンク”に変更した場合。
    リンクあいうえおかきくけこさしすせそ
    ↑文字列全部の表記が変わるわけでなく、あいうえお以降がのこります。なお、リンクまでが青字です。リンクは正常に飛びます。

    • 追記させて頂きます。

      パス文字列をメール本文へコピペで貼り付けた場合、デフォルトでハイパーリンクが付与されますが、その状態で実行するとご指定の状況となります。
      この場合にはデフォルトで付与されたハイパーリンクを削除した上でマクロを実行頂きたくお願いいたします。

    • 文字列の一部が残ってしまう件につきまして、
      書式設定が混在していると検索やハイパーリンクがかかりにくい場合がありますので
      お手数ですがメモ帳などで書式が無い状態で本文へコピペして試して頂きたく
      お願い致します。

  • 有益な情報を公開いただき、大変勉強になります。
    1つだけ質問があるのですが、ハイパーリンクの表示文字を変えたいのですが、どうすれば良いでしょうか?
    TextToDisplyを使っても変わらなかったため、質問させていただきました。
    教えていただけますと幸いです。

    • いつもご利用ありがとうございます。

      ハイパーリンクの表示文字を変える方法につきましては、以下のように
      TextToDisplayに表示させたい名前を指定すれば可能となります。

      ■変更前
      …, Address:=HyperLinkList(i)

      ■変更後
      …, Address:=HyperLinkList(i), TextToDisplay:=”エク短リンク”

      ただし、公開コードではハイパーリンク変更の対象を”\\”、”file:”、”http”からはじまる文字列としているため、
      それ以外のパターンの文字列は対象外になりますことご了承のほどお願いいたします。

  • コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です