2014年2月25日火曜日

VBAでOutlookにThunderbirdの良いところを取り込んでみる

【まえがき】

Outlookに関して、他のメーラーと比べてちょっと不便に感じるところ(3点)をVBAを用いて改善してみました。具体的には、下記の3点をVBAで実現しています。
  • メール送信時に、添付ファイルのつけ忘れがないかをチェックする
  • メール送信時に、自動的にBCCに自分のアドレスをセットする
  • メール送信時に、個別に開封通知要求を設定できるようにする

【サンプルコード】

 オプションで、「マクロの設定」で「すべてのマクロを有効にする」を設定した後、一旦Outlookを再起動し、
下記コードを、OutlookのThisOutlookSessionに貼りつければそのまま動作します。
Application_ItemSend内において不要な処理 (行)は、コメントアウトするなり、削除すればOKです。
SetBCC に関しては、BCCに入れたいアドレスを第1引数にして(下記例では、"my@address.com"にしている箇所に記載して)ください。

特別な処理は行っていないので、Outlook2000以降であれば、どのバージョンでも動作可能だと思います。

【サンプルコードに関する補足】

メール送信時に、複数の処理を実装する

処理毎にサブルーチンを分けて、Item, Cancel をそのままサブルーチンに引数として渡すと良いです。あとは、Item, Cancel が渡されたサブルーチンを、Application_ItemSendに直接コーディングする場合と同様に実装すればOKです。

巷には、Application_ItemSendに直接コーディングするサンプルが多いですが、処理毎にサブルーチンに分けておいた方が保守し易いですし、処理ごとのON/OFFが楽にできて良いのではないかと思います。

添付ファイル忘れの処理

CheckAttachment ですが、単に、下記条件を満たす場合に、メッセージボックスを表示しているだけです。必要であれば、適宜改変してください。
  • メール本文に「添付」か「送付」の単語が含まれているのに、
  • 添付ファイルが1個もない

【参考】