【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ハル。