【Module2】受信したメールを自動的に MSG ファイルとして保存するマクロ
Module2では、受信したメールを自動的に MSG ファイルとして保存するマクロを実践してみます。
「受信メールを自動的に保存する」
あまり必要性がないような。。笑
マクロを作成する前に
【Module1】を書き終わって思ったのですが、似たような作業は1つの記事に書いてしまって、都度参照してもらうことにしよう。
そうしないと、1つの記事がダラダラと長くなる。。
共通化した方がいいと思ったことはこの記事を随時更新してお知らせしたいと思います。
1.「Application_NewMailEx」イベントについて
「Application_NewMailEx」はメールを受信した際に発生するイベント処理です。標準モジュールに記載しても動作せず、「ThisOutlookSession」に記載をする必要があります。
そして、Outlook研究所さんのソースコードでは、ほとんどのプロシージャが「Private」で指定されています。「Private」を使用すると、他のモジュールのプロシージャからの呼び出しができません。つまり、Outlook研究所さんのソースコードは「全てのコードをThisOutlookSessionに記載する」前提でソースが記載されているものと思っています。(間違っていたらゴメンナサイ。コメントで指摘してください。)
本ブログでは、大量のマクロを標準モジュールのModule1,Module2と命名して紹介します。そのため「Application_NewMailEx」で呼び出しているプロシージャが「Private」で指定されていると、エラーになってしまいます。
そのため、実際にソースコードをコピペして動かす際には、以下のルールを守ってください。
①「Application_NewMailEx」のみ「ThisOutlookSession」に貼り付ける。
②その他のプロシージャは同一標準モジュール内に貼り付ける。
③「Application_NewMailEx」で呼び出しているプロシージャの「Private」を削除する。※
※Privateを削除するならPublicに変更した方がいいんじゃないかとも思っているんですが、とりあえず問題なく動作しているのであまり気にしないことにします。
以下、Module1で紹介するコードを例にしています。
Outlook解説の目次
受信時の処理 | |
タイトル | |
Module1 | 受信したメールの添付ファイルに日付と連番を付けて自動保存するマクロ |
Module2 | 受信したメールを自動的に MSG ファイルとして保存するマクロ |
Module3 | 受信したメールに添付されたメッセージの添付ファイルも含めて自動保存するマクロ |
Module4 | 件名の先頭の [SPAM] を削除するマクロ |
Module5 | Exchange 環境で受信したメールの差出人を連絡先の表示名に置き換えるマクロ |
Module6 | 一定時間内に同じ件名のメールを複数受信したらメールを送信するマクロ |
Module7 | 受信メールの差出人を連絡先フォルダーのサブフォルダーも含めて検索し、表示名を置き換えるマクロ |
Module8 | 受信したメールから取得したキーワードにより Excel を検索し、情報を追記して転送するマクロ |
Module9 | 送信者が自分以外のメールを受信した際に添付ファイルを自動保存するマクロ |
Module10 | 受信したメールの本文を 1 行ごとに処理するマクロ |
Module11 | メッセージ受信時に游ゴシックを別のフォントに置き換えるマクロ |
Module12 | 特定の条件のメールを受信した際に、本文に記載された IP アドレスへ ping するマクロ |
Module13 | 決まった件名で終わるメッセージを受信したら、キーワードを含む 1 行を CSV ファイルに保存するマクロ |
Module14 | 受信メールの宛先やCcをアドレス帳の名前に置き換えるマクロ |
Module15 | メール本文に含まれる名前で連絡先を検索してメールを移動するマクロ |
Module16 | Outlook.com のメールを Outlook で受信した場合のみ文字化けするメールを修正するマクロ |
Module17 | HTML 形式のメールの本文中に含まれる表を Excel にコピーするマクロ |
Module18 | 受信したメールの添付メッセージに含まれる添付ファイルも保存・印刷するマクロ |
Module19 | 決まった件名のメッセージを受信したら、データを CSV ファイルに保存するマクロ-複数対応版 |
Module20 | 特定条件の受信メールの差出人を連絡先に追加するマクロ |
Module21 | 削除通知のメールをもとに予定を削除するマクロ |
Module22 | 受信したメールの件名の文字列により異なるフォルダーへ自動的に添付ファイルを保存するマクロ |
Module23 | 受信したメールを振り分け前にアカウントごとのフォルダーに保存するマクロ |
Module24 | 受信したメールの添付ファイルを印刷し、メールを移動するマクロ |
Module25 | メッセージを受信したら自動返信し、メール本文と添付ファイルを印刷するマクロ IMAP4 対応版 |
Module26 | メッセージを受信したら自動返信し、メール本文と添付ファイルを印刷するマクロ |
Module27 | 件名にキーワードを含むメールを受信した際に分類項目と連番を付与するマクロ |
Module28 | メッセージの受信を通知するマクロ |
Module29 | 受信したメールをもとに予定表アイテムを作成するマクロ |
Module30 | 受信したメッセージを再送信するマクロ |
Module31 | Excel ファイルのキーワードをもとに転送するマクロ |
Module32 | LDAP サーバーから差出人の表示名を取得して置き換えるマクロ |
Module33 | メッセージの受信時に連番を件名に付与するマクロ |
Module34 | 本文に特定の文面を含む場合に、そのメールとファイルを添付して転送するマクロ |
Module35 | 特定の文字列を件名や本文に含むメールを受信した際に予定を作成するマクロ |
Module36 | 添付された Excel ファイルの特定のセルの値でフォルダーに振り分けるマクロ |
Module37 | 受信したメールを振り分け前に保存するマクロ |
Module38 | 特定の件名を含むメールを受信した際に、差出人ごとのフォルダに添付ファイルを上書き保存するマクロ |
Module39 | メールを受信するたびにメモに変換して保存するマクロ |
Module40 | Outlook 2003 で受信時に分類項目を消去するマクロ |
Module41 | メッセージの差出人を連絡先の表示名に置き換え、さらに連絡先ごとのフォルダに振り分けるマクロ |
Module42 | メッセージを連絡先ごとのフォルダに振り分けるマクロ |
Module43 | 添付された Excel ファイルの内容を受信の際に本文に追記するマクロ |
Module44 | 受信したアカウントごとのフォルダに添付ファイルを保存するマクロ |
Module45 | 件名、本文、差出人が空白のメールを受信時に削除するマクロ |
Module46 | 決まった件名のメッセージを受信したら、データを CSV ファイルに保存するマクロ |
Module47 | Outlook 2002 以前で新着メッセージを処理するマクロを記述する |
Module48 | 受信したメールの差出人を連絡先から検索する |
Module49 | 受信したメールの添付ファイルを自動保存するマクロ |
【Module1】受信したメールの添付ファイルに日付と連番を付けて自動保存するマクロ
Outlook研究所さんの記事の解説です。
1日1記事を目標にするとは言ったものの、平日も飲み会だったり、開発する環境が整ってなかったりで、なかなか上手くいかないものですね。
言い訳はこの辺で終わらせて、解説に移ります。
第1回目のタイトルは
【受信したメールの添付ファイルに日付と連番を付けて自動保存するマクロ】
です。
普段の業務でファイルのやり取りが多い人は使ってみるとかなり有効なマクロだと思います。
本来、セキュリティを考慮すると、むやみにファイルを添付してメールを送付するのはお勧めできないのですが、そんなことも言ってられない人も沢山いらっしゃるのが現実です。
※現在、セキュリティチームで働いているので、そのうち「どのような危険が潜んでいるか」「どのようにメール業務を脱却するか」なども記事にしたいです。
それでは本題に入ります。
ソースコードはOutlook研究所さんの記事から参照してください。
受信したメールの添付ファイルに日付と連番を付けて自動保存するマクロoutlooklab.wordpress.com
また、マクロを作成する前に - 初心者プログラマのハルコム日記で紹介した内容に従って、ソースコードを貼り付けてください。
ここで、追加で1点修正が必要です。
「SaveAttachmentsWithDate」内のSAVE_PATHで添付ファイルの保存先フォルダを指定していますので、任意のフォルダパスに指定してください。
ただし、注意が必要です。よく見ると
strFileName = SAVE_PATH & strDate & Format(iSerial, "0#_") & .FileName
となっています。
「フォルダパス+日付+連番+ファイル名」で保存先とファイル名を指定していますが、SAVE_PATH & strDateとなっています。
この場合SAVE_PATHの最後に¥を指定してあげないと、フルパスが成り立ちません。
ここだけ注意すればOKです。
まずは「Application_NewMailEx」の適当な場所でブレークポイントを置いてみてください。
テストとして、ファイルを添付したメールを自分自身に送付してみます。
メール受信後、「Application_NewMailEx」のブレークポイントで止まっていると思いますので検証していきましょう。
メッセージオブジェクトがあれば「SaveAttachmentsWithDate」を呼び出すと書いているように見えます。
これだと、絶対に「SaveAttachmentsWithDate」が呼ばれちゃうのでIf分必要なのかな?と思っちゃいました。教えて、偉い人!(解説するとか言いながらお恥ずかしい)
「SaveAttachmentsWithDate」ではFor Each objAttach In objMsg.Attachmentsで
添付ファイルの数だけファイルを保存する処理を行っています。
この中で、日ごとの連番を取得する処理(GetSerialForToday)がクセがあるかもしれませんね。
ただ、解説を書こうと思ったら、丁寧に細かくコメントされていて、出しようがありません。笑
処理が完了すると、指定したフォルダの中に添付のファイルが保存されていることが確認できました。
ここからさらに、受信したメールを自分自信に再送します。
すると連番が増えていることがわかりますね。
今日はここまでとします。
めっちゃ疲れて、最後の方が雑になっちゃいました。。
なかなか大変な作業ですね。
まだ1記事目、めげずに頑張ります。
これ違うだろ、この辺わからんからまじめに解説しろなどのコメントを頂ければ誠心誠意対応します。
お休みなさい。
byハル。
Outlook研究所さんの解説を始めます
まずは、得意分野の記事を書いていきたいと思います。
本来はExcelVBAが得意で、職場ではお客様の業務効率化を図ったりしています。
なので、ExcelVBAの記事を書くのが楽なんですが、他の方が沢山記事を書かれていてネタが出尽くしてしまっていますよね。笑
そこで、OutlookVBAなるものに手を出してみたいと思います。
メールの単純作業を効率化しちゃおうって話ですね。
しかしOutlookVBAについては全くの素人なもので、ちょっとずつ勉強してこのブログで成果を共有していきたいです。
早速、OutlookVBAについて調べていると、Outlook研究所なるサイトにたどり着きました。
Outlook 研究所 | Outlook を徹底活用する方法を研究するサイトです。
これがもう、これ以上やることないんじゃないかってくらいに沢山の機能を紹介してくれているんですね。
「じゃあ、お前必要ないじゃん」って声は一旦置いてください。笑
実際に記事を読み進めると、要件と実現するためのコードは書いてあるものの、なかなか自分のやりたいことに当てはめるのが難しかったりします。
そこで、本ブログではVBA初心者にでも理解できるように詳しく解説したいと思います。
できれば1日1記事を目標に書きますが、気合入れすぎても仕方ないと思うので気ままに書いていきます。
もし、Outlook研究所さんの紹介している機能で優先して解説してほしい記事があればコメントください。
そのほか、ExcelVBAについてもお困りのことがありましたらご相談ください。
趣味の範囲でお力になれることがあれば、お手伝いします。