本文中のハイパーリンクを削除する場合は一つづつ右クリックして削除をしなければならず、特に複数あった場合は少々面倒ですよね。
今回は、前回の「【Outlook VBA】メール本文中の”\\”や”file:”から始まる文字列へハイパーリンクを一括挿入する」に続いて、本文中のハイパーリンクを一括で削除できる方法をご紹介します。
完成したマクロは以下の通りです。
もくじ
マクロを設置する下準備をする。
以下を参考にVBAコードを配置する場所を表示させます。
テキスト形式を選択している方はハイパーリンクは表示されませんので、HTML形式かリッチテキスト形式に変更をお願いします。
この設定が終えたら一度Outlookを再起動させてください。
マクロを登録する
「開発」タブ>「Visual Basic」を押します。
「Visual Basic Editor」にて、[Project1] > [Microsoft Outlook Objects] の ThisOutlookSessionをダブルクリックします。
右ペインのコードエリアへ、VBAコードを貼り付けて保存します。
こちらで完了です。
Public Sub ハイパーリンク削除()
Dim objWord As Object
Dim objHyperLinks As Object
Dim objHyperLink As Object
'本文のオブジェクトを取得
Set objWord = ActiveInspector.WordEditor
Set objHyperLinks = objWord.Range.Hyperlinks
'ハイパーリンク削除
For Each objHyperLink In objHyperLinks
objHyperLink.Delete
Next
'オブジェクトの開放
Set objWord = Nothing
Set objHyperLinks = Nothing
Set objHyperLink = Nothing
End Sub
試しにハイパーリンク付き文字列をメール本文中に挿入
メールを新規作成しハイパーリンクを入れた文字列を用意しましょう。
次にoutlook本体に戻り「開発」タブの「マクロ」>「ハイパーリンク削除」を押下します。
できたと思いきや、一部の文字列でハイパーリンクが残っていますね…
一部のハイパーリンクが残ってしまう原因についてはおそらくハイパーリンクがネストしている可能性が考えられますが、詳細は不明です。
なお、ハイパーリンクの数分繰り返して実行するとなんとかすべて消せることができましたので、ハイパーリンク分繰り返すように変更をしました。
Public Sub ハイパーリンク削除()
Dim objWord As Object
Dim objHyperLinks As Object
Dim objHyperLink As Object
'本文のオブジェクトを取得
Set objWord = ActiveInspector.WordEditor
Set objHyperLinks = objWord.Range.Hyperlinks
Debug.Print objHyperLinks.Count
'ハイパーリンク削除
For i = 1 To objHyperLinks.Count
For Each objHyperLink In objHyperLinks
objHyperLink.Delete
Next
Next
'オブジェクトの開放
Set objWord = Nothing
Set objHyperLinks = Nothing
Set objHyperLink = Nothing
End Sub
これでどうでしょう。
・・・
はい、できましたね。
最後に
いかがでしょうか。ハイパーリンクは表示部分の文字列を変えてもハイパーリンクまで反映されない場合がありますので、こんな時は一旦ハイパーリンクをすべて削除し、再度ハイパーリンクを付与できれば間違いないですね。
そんな場面でぜひこれらのスクリプトを活用いただければと思います。
コメントを残す