Outlookでメール記載されたパスをハイパーリンク化してクリックできるようにするマクロを作ってみた。 皆さんの会社ではメーラーは何を使っているだろうか? まあ読者の皆なら、きっとOutlookを使っていることだろう。 なぜならマクロが使えるからだ! VBA♪ VBA♪ 今回はOutlookのメール作成画面で みたいなパスへのリンクを にワンクリックで変換するマクロを開発した。 これにより、メールの受信者は楽にファイルを見ることができるし、送信者は手間を掛けずにクリック可能なパスを記載できるようになる。 お互いにハッピーになれる最高なマクロである。 Outlookには以前から頭の痛い課題があった。 相手から届いたメールのローカルファイルリンクがクリックできないのである。 (社内ではメールフィルタリング等による受信拒否の影響を減らすため、メールの設定は「テキストメール」に統一している) テキストメールでは、相手に送られる本文データにはどこからどこまでがリンクかの情報は含まれていない。 従って、ハイパーリンクになるか否かはOutlook次第ということになる。 一応、ハイパーリンクになるかどうかは、パスの文字列が一定の法則で決まるようなので、予めOutlookの認識出来る書式でメールを送ってやる必要がある。 ローカルファイルリンク(正式な名称ではないのに注意)とは、具体的にはこういうパスのことである。
このようなパスをメール本文に記載した時、ハイパーリンクが自動的に生成されない。(クリックできる状態にならない)概要
開発経緯
Outlookメールとネットワークドライブの課題
対して、UNCパスの場合はメールに記載するとハイパーリンク化される。
\\192.168.1.1\share\01ほげほげ部\20191010ふがふがプロジェクト\ぴよぴよ管理.xlsx会社によっては、ネットワークコンピューター(サーバー)の共有フォルダへのUNCパスを「ネットワークドライブの割り当て」からZ:とかにマウントして使われている場合もあるようだ。
先頭のZ:の部分の事を「ドライブレター」と呼び、A~Zの好きなアルファベットを使う事ができるので、組織によってS:だったりY:\だったりすると思うが。(内蔵ドライブと競合するので、普通は後半のアルファベットを使用する)
この不便さを回避するために、敢えてネットワークドライブの割り当てをしない運用のほうが便利かもしれない。
が、それは次の方法ですべて解決する。
ローカルファイルリンクをハイパーリンク化する
調査した結果、有効な対処法があることが判明した。
どうやらfile://を先頭につけると良いらしい。
file://Z:\share\01ほげほげ部\20191010ふがふがプロジェクト\ぴよぴよ管理.xlsxお見事!!!
同じように先頭に\\を付けることでもハイパーリンク化されるのだが、クリックした時にジャンプされない事を確認した。
file://と\\は少々意味が異なるようだ。(今まで同一の意味があると勘違いしていた)
パスが途中で途切れる場合の対策
実はパスに「半角スペース」や「①」などが含まれている場合、あるいは「半角と全角の境界部」でハイパーリンクが途切れてしまうことがある。
これは送信者の画面で繋がっていようと、受信者のOutlookで再評価されるため、どうなるかは送ってみない限りわからない。
File://Z:\share\01ほげほげ部\20191010ふがふがプロジェクト\①ぴよぴよ管理.xlsxこの対策として有効なのが、ダブルクォーテーション(Shift+2)で囲うことである。
ところが、この方法、送信画面ではハイパーリンク化されるが、それとともに両端のダブルクォーテーションが消失してしまう。 消失するが送信すると相手の画面では復活する。
あとは環境によるらしいが、<と>で囲ったほうが良いらしい。
つまり纏めると
<"File://Z:\share\01ほげほげ部\20191010ふがふがプロジェクト\①ぴよぴよ管理.xlsx">という書き方が一番間違いないみたい。
パスが改行される場合の対策
しかしまだ足りない。上記のメールを送ると次のようにパスが途切れてしまう。
これは、送信者のOutlookの設定の「指定の文字数で自動的に折り返す」が原因である。
今どきのメーラーは自動的に右端で折り返してくれるので、昔ながらのマナーを守る必要は無い(はず)
これが原因で受信エラーになるようなメールサーバーはまず無い(はず)
だからこんな機能はOFFにしたいのだが、Outlookでは132文字までしか増やせない。
上限を超えて増やしたい場合はレジストリを操作することで回避できる。
(Office 2016の場合) [HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Options\Mail] "EditorPreference"=dword:00010000これについては今回のマクロには含まれていない。
完成マクロ
以上のようなパスの変換を、毎回毎回行うのは非常にメンドクサイ。
そこでワンクリックで自動変換するマクロを作ってみた。
仕様
- 何回実行してもOK
- どれだけたくさんパスが書いてあってもOK
今回はクイックアクセスツールバーに登録したが、送信イベントなどに仕込んで強制的に実行する仕組みにしても良いかもしれない。
Rem Rem Rem Rem Rem Rem Rem使用例
ソースコード
マクロの登録
OutlookにてAlt+F11
VBEにてProject1を右クリックし、挿入→標準モジュール
- 本マクロを貼り付け
- 新規メール作成画面で「クイックアクセスツールバーのユーザー設定」で「その他のコマンド」
- 下図のようにマクロを追加
- 今後はこのボタンを押すだけで、マクロが実行される
参考資料
docs.microsoft.com
— ことりちゅん@えくせるちゅんちゅん (@KotorinChunChun) 2019年10月16日
Outlookではなく、ブラウザで動くようなメーラーの場合はローカルファイルリンク有効化というChrome拡張を使うことで、GmailやSlackでもリンクがクリックできるらしい。
まとめ
メールでは相手に如何に読んでもらえるかが重要である。
ワンクリックで閲覧出来るファイルと、パスをコピーしたりフォルダを追いかけたりしてアクセスするのとでは、閲覧してもらえる可能性に大きな差がある。
このマクロを使えば、ほぼノーコストでハイパーリンクが働くようになる。
是非とも活用して、イケてる社会人になってほしい。
以上
続編
尚、Outlookではドライブが有るか・ファイルが有るかは関係なくハイパーリンク化されるため、相手と自分でドライブレターが違うと、クリックしても開けないという事態になる。
そんな方から別のアイディアを頂いたので、別パターンのマクロを作ってみた。
www.excel-chunchun.com
何か御座いましたらコメント欄、またはTwitterからどうぞ♪
それではまた来週♪ ちゅんちゅん(・8・)