Outlookでメール記載されたパスをハイパーリンク化してクリックできるようにするマクロを作ってみた。
概要
皆さんの会社ではメーラーは何を使っているだろうか?
- Gmail?
- Thunderbird?
- Apple Mail?
- Yahoo Mail?
まあ読者の皆なら、きっとOutlookを使っていることだろう。
今回はOutlookのメール作成画面で
Z:\share\01ほげほげ部\ぴよぴよ管理.xlsx
みたいなパスへのリンクを
<"file://Z:\share\01ほげほげ部\ぴよぴよ管理.xlsx">
にワンクリックで変換するマクロを開発した。
これにより、メールの受信者は楽にファイルを見ることができるし、送信者は手間を掛けずにクリック可能なパスを記載できるようになる。
お互いにハッピーになれる最高なマクロである。
開発経緯
Outlookメールとネットワークドライブの課題
Outlookには以前から頭の痛い課題があった。
相手から届いたメールのローカルファイルリンクがクリックできないのである。
(社内ではメールフィルタリング等による受信拒否の影響を減らすため、メールの設定は「テキストメール」に統一している)
テキストメールでは、相手に送られる本文データにはどこからどこまでがリンクかの情報は含まれていない。
従って、ハイパーリンクになるか否かはOutlook次第ということになる。
一応、ハイパーリンクになるかどうかは、パスの文字列が一定の法則で決まるようなので、予めOutlookの認識出来る書式でメールを送ってやる必要がある。
ローカルファイルリンク(正式な名称ではないのに注意)とは、具体的にはこういうパスのことである。
Z:\share\01ほげほげ部\20191010ふがふがプロジェクト\ぴよぴよ管理.xlsx
このようなパスをメール本文に記載した時、ハイパーリンクが自動的に生成されない。(クリックできる状態にならない)
対して、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 @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
使用例
ソースコード
マクロの登録
Outlookにて
Alt+F11
VBEにて
Project1
を右クリックし、挿入→標準モジュール
- 本マクロを貼り付け
- 新規メール作成画面で「クイックアクセスツールバーのユーザー設定」で「その他のコマンド」
- 下図のようにマクロを追加
- 今後はこのボタンを押すだけで、マクロが実行される
参考資料
ExcelやOutlookメールで、
— ことりちゅん@えくせるちゅんちゅん (@KotorinChunChun) 2019年10月16日
\\192.168.x.x\share\hoge.xls
だと、ハイパーリンクが出来るのに
ネットワークドライブに割り当てた状態の
Z:\hoge.xls
だと、ハイパーリンクが出来ない。
ついでに言えば、
C:\hoge.xls
もダメ。
こういう時は、
file://Z:\hoge.xls
で良いことに気がついたが何故?
Outlookではなく、ブラウザで動くようなメーラーの場合はローカルファイルリンク有効化というChrome拡張を使うことで、GmailやSlackでもリンクがクリックできるらしい。
まとめ
メールでは相手に如何に読んでもらえるかが重要である。
ワンクリックで閲覧出来るファイルと、パスをコピーしたりフォルダを追いかけたりしてアクセスするのとでは、閲覧してもらえる可能性に大きな差がある。
このマクロを使えば、ほぼノーコストでハイパーリンクが働くようになる。
是非とも活用して、イケてる社会人になってほしい。
以上
続編
尚、Outlookではドライブが有るか・ファイルが有るかは関係なくハイパーリンク化されるため、相手と自分でドライブレターが違うと、クリックしても開けないという事態になる。
そんな方から別のアイディアを頂いたので、別パターンのマクロを作ってみた。
何か御座いましたらコメント欄、またはTwitterからどうぞ♪
それではまた来週♪ ちゅんちゅん(・8・)