えくせるちゅんちゅん

ことりがエクセルをちゅんちゅんするブログ

MENU

Outlookでメール記載されたパスをハイパーリンク化してクリックできるようにするマクロ

Outlookでメール記載されたパスをハイパーリンク化してクリックできるようにするマクロを作ってみた。


概要

皆さんの会社ではメーラーは何を使っているだろうか?


まあ読者の皆なら、きっとOutlookを使っていることだろう。

なぜならマクロが使えるからだ! VBA♪ VBA


今回はOutlookのメール作成画面で

Z:\share\01ほげほげ部\ぴよぴよ管理.xlsx

みたいなパスへのリンクを

<"file://Z:\share\01ほげほげ部\ぴよぴよ管理.xlsx">

にワンクリックで変換するマクロを開発した。


これにより、メールの受信者は楽にファイルを見ることができるし、送信者は手間を掛けずにクリック可能なパスを記載できるようになる。

お互いにハッピーになれる最高なマクロである。


開発経緯

Outlookメールとネットワークドライブの課題

Outlookには以前から頭の痛い課題があった。

相手から届いたメールのローカルファイルリンクがクリックできないのである。

(社内ではメールフィルタリング等による受信拒否の影響を減らすため、メールの設定は「テキストメール」に統一している)

f:id:Kotori-ChunChun:20191021225858p:plain

テキストメールでは、相手に送られる本文データにはどこからどこまでがリンクかの情報は含まれていない。

従って、ハイパーリンクになるか否かはOutlook次第ということになる。

一応、ハイパーリンクになるかどうかは、パスの文字列が一定の法則で決まるようなので、予めOutlookの認識出来る書式でメールを送ってやる必要がある。


ローカルファイルリンク(正式な名称ではないのに注意)とは、具体的にはこういうパスのことである。

Z:\share\01ほげほげ部\20191010ふがふがプロジェクト\ぴよぴよ管理.xlsx

このようなパスをメール本文に記載した時、ハイパーリンクが自動的に生成されない。(クリックできる状態にならない)

f:id:Kotori-ChunChun:20191021213029p:plain


対して、UNCパスの場合はメールに記載するとハイパーリンク化される。

\\192.168.1.1\share\01ほげほげ部\20191010ふがふがプロジェクト\ぴよぴよ管理.xlsx

f:id:Kotori-ChunChun:20191021221253p:plain


会社によっては、ネットワークコンピューター(サーバー)の共有フォルダへのUNCパスを「ネットワークドライブの割り当て」からZ:とかにマウントして使われている場合もあるようだ。

先頭のZ:の部分の事を「ドライブレター」と呼び、A~Zの好きなアルファベットを使う事ができるので、組織によってS:だったりY:\だったりすると思うが。(内蔵ドライブと競合するので、普通は後半のアルファベットを使用する)

この不便さを回避するために、敢えてネットワークドライブの割り当てをしない運用のほうが便利かもしれない。


が、それは次の方法ですべて解決する。


ローカルファイルリンクをハイパーリンク化する

調査した結果、有効な対処法があることが判明した。

どうやらfile://を先頭につけると良いらしい。

file://Z:\share\01ほげほげ部\20191010ふがふがプロジェクト\ぴよぴよ管理.xlsx

f:id:Kotori-ChunChun:20191021221554p:plain

お見事!!!


同じように先頭に\\を付けることでもハイパーリンク化されるのだが、クリックした時にジャンプされない事を確認した。

f:id:Kotori-ChunChun:20191021221802p:plain

file://\\は少々意味が異なるようだ。(今まで同一の意味があると勘違いしていた)


パスが途中で途切れる場合の対策

実はパスに「半角スペース」や「①」などが含まれている場合、あるいは「半角と全角の境界部」でハイパーリンクが途切れてしまうことがある。

これは送信者の画面で繋がっていようと、受信者のOutlookで再評価されるため、どうなるかは送ってみない限りわからない。

File://Z:\share\01ほげほげ部\20191010ふがふがプロジェクト\①ぴよぴよ管理.xlsx

f:id:Kotori-ChunChun:20191021225448p:plain

f:id:Kotori-ChunChun:20191021225011p:plain


この対策として有効なのが、ダブルクォーテーション(Shift+2)で囲うことである。

f:id:Kotori-ChunChun:20191021225127p:plain

ところが、この方法、送信画面ではハイパーリンク化されるが、それとともに両端のダブルクォーテーションが消失してしまう。 消失するが送信すると相手の画面では復活する。

あとは環境によるらしいが、<>で囲ったほうが良いらしい。

つまり纏めると

<"File://Z:\share\01ほげほげ部\20191010ふがふがプロジェクト\①ぴよぴよ管理.xlsx">

f:id:Kotori-ChunChun:20191021225953p:plain

という書き方が一番間違いないみたい。


パスが改行される場合の対策

しかしまだ足りない。上記のメールを送ると次のようにパスが途切れてしまう。

f:id:Kotori-ChunChun:20191021230128p:plain

これは、送信者のOutlookの設定の「指定の文字数で自動的に折り返す」が原因である。

f:id:Kotori-ChunChun:20191021230256p:plain

今どきのメーラーは自動的に右端で折り返してくれるので、昔ながらのマナーを守る必要は無い(はず)

これが原因で受信エラーになるようなメールサーバーはまず無い(はず)

だからこんな機能はOFFにしたいのだが、Outlookでは132文字までしか増やせない。

上限を超えて増やしたい場合はレジストリを操作することで回避できる。

(Office 2016の場合)
[HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Options\Mail]
"EditorPreference"=dword:00010000

これについては今回のマクロには含まれていない。


完成マクロ

以上のようなパスの変換を、毎回毎回行うのは非常にメンドクサイ。

そこでワンクリックで自動変換するマクロを作ってみた。

仕様

  • 何回実行してもOK
  • どれだけたくさんパスが書いてあってもOK

今回はクイックアクセスツールバーに登録したが、送信イベントなどに仕込んで強制的に実行する仕組みにしても良いかもしれない。

Rem 文章中のパスと思われる文字列をハイパーリンクに対応させる関数
Rem
Rem  @name  ReplacePathToHyperlink
Rem
Rem  @param base_str       変換元文字列
Rem
Rem  @return  As string    Outlookがハイパーリンク化可能な文字列
Rem
Rem  @example
Rem    IN :
Rem         おつかれさまです
Rem         C:\Test\hoge.xls
Rem         以上、よろしくおねがいします。
Rem   OUT :
Rem         おつかれさまです
Rem         <"file://C:\Test\hoge.xls">
Rem         以上、よろしくおねがいします。
Rem
Rem  @note
Rem        パスは <"file:// "> で囲うことでハイパーリンク化される。
Rem
Rem        パスは必ず改行で終わること
Rem        Outlookではメール送信時の自動折返しを切っておくこと
Rem        メール作成画面ではリンク状態にはならない。
Rem        自分から自分へ送信してテストするように。
Rem


使用例

f:id:Kotori-ChunChun:20191021232114g:plain


ソースコード


マクロの登録

  • OutlookにてAlt+F11

  • VBEにてProject1を右クリックし、挿入→標準モジュール

f:id:Kotori-ChunChun:20191021231346p:plain

  • 本マクロを貼り付け
  • 新規メール作成画面で「クイックアクセスツールバーのユーザー設定」で「その他のコマンド」

f:id:Kotori-ChunChun:20191021231147p:plain

  • 下図のようにマクロを追加

f:id:Kotori-ChunChun:20191021231304p:plain

  • 今後はこのボタンを押すだけで、マクロが実行される

f:id:Kotori-ChunChun:20191021231703p:plain


参考資料

docs.microsoft.com



Outlookではなく、ブラウザで動くようなメーラーの場合はローカルファイルリンク有効化というChrome拡張を使うことで、GmailやSlackでもリンクがクリックできるらしい。


まとめ

メールでは相手に如何に読んでもらえるかが重要である。

ワンクリックで閲覧出来るファイルと、パスをコピーしたりフォルダを追いかけたりしてアクセスするのとでは、閲覧してもらえる可能性に大きな差がある。

このマクロを使えば、ほぼノーコストでハイパーリンクが働くようになる。

是非とも活用して、イケてる社会人になってほしい。

以上


続編

尚、Outlookではドライブが有るか・ファイルが有るかは関係なくハイパーリンク化されるため、相手と自分でドライブレターが違うと、クリックしても開けないという事態になる。

そんな方から別のアイディアを頂いたので、別パターンのマクロを作ってみた。

www.excel-chunchun.com


何か御座いましたらコメント欄、またはTwitterからどうぞ♪

それではまた来週♪ ちゅんちゅん(・8・)

プライバシーポリシー