はじめに
日次、週次、月次…と定期的に送るメールについて
今まではテンプレートを作成して都度値変えて…とやっていたのですが、
もう少し楽にできないかな…と考えているので、その思考プロセスを記録として残します。
(いまのところの)結論
Outlook VBAを使って
こんな感じのを作りました。
例として毎日送る日報を想定しています。
Sub 日報メールの作成()
Dim myItem As Outlook.MailItem
Set myItem = Application.CreateItemFromTemplate("フォーマットファイルパス.oft")
today = Format(Date, "yyyymmdd")
Dim attatchNippoPDF As String
Dim attatchNippoPDFFileName As String
attatchNippoPDFFileName = "作業日報_" + today + "_なまえ.pdf"
attatchNippoPDF = "添付ファイル保存先" + attatchNippoPDFFileName
myItem.Subject = Replace(myItem.Subject, "%今日%", today)
myItem.Body = Replace(myItem.Body, "%今日%", today)
myItem.Display
If Dir(attatchNippoPDF) <> "" Then
myItem.Attachments.Add (attatchNippoPDF)
MsgBox "作成しました!送る前にPDFの内容をもう一度確認しましょう!"
Else
MsgBox attatchNippoPDF & vbCrLf & "が存在しません。先に作成しましょう!"
myItem.Close olDiscard
End If
End Sub
実際にやってみた
前提として、添付で送るPDFを、所定のフォルダに作成しておく必要がありますが、
それさえ作成しておけば、送付メールはこれでいけるかなと思います。
作成していない場合は、「先に作成しましょう!」の旨のダイアログを出して、作成したMsgを保存せずに終了します。
テンプレート
こんな感じのテンプレートを用意しました。
ソースでは本文のエイリアスも置換していますが、
今回は件名部分だけ変わる感じのテンプレートです。
動かしてみた
作成しました!のダイアログが出ました。
件名のエイリアスも、しっかり今日の日付に置換されています。
OKをクリックすると…
添付ファイルもばっちり添付されました。
いえーい。
参考文献
そもそもOutlook VBAの情報が非常に少ないので、
探すの結構苦労しました。
以下の3つを参考にして作りました。
おわりに
毎日使っているメール、コピペでも簡単に作れるじゃん!
と言われたらその通りなんですが、もう少しだけ簡単にしたいな…と思う方に届けば幸いです。
また、もっと楽にできるよ!とか
こういうコード書いたらもっと対応できる幅広がらない?
等ありましたらコメントいただけるととても嬉しいです。
いいねもください(豹変)
ちなみにお師匠様に「定期的に送るメール、テンプレからコピペするのめんどくさくないですか?」って言ったら「えぇ~~~!?」(絶句)と言われました。