こんにちは。
「作業報告書の提出状況を確認して、催促メールを自動送信するツールを作ってほしい…」と友人に頼まれ、せこせこと💦
やり方を色々調べていると、Excel VBAからOutlookの機能を活用することで、メール関連の機能を自動化できそうだと分りました。
では、備忘録スタートします。
■ 動作環境
OS: Windows 8.1(64ビット)
Excel: 2013(32ビット)
Outlook: 2013(32ビット)
■ VBAの参照設定
■ メールの自動送信
※これ以降も同様ですが、「m_」で始まる英語大文字の変数名みたいな名称は、何れも私が別途定義している定数です。
処理の流れは次のとおりです。
Outlookを操作するためのApplicationインスタンスを作成(objOutlook)
ApplicationクラスのCreateItemメソッドで、メールを操作するためのMailItemインスタンスを作成(objMail)
メール内容の作成(一例として、ToやSubject、Bodyなどを設定)
メールの実行(一例として、メールを表示するDisplayを実行)
■ メールを操作するためのMailItemインスタンス
先に紹介したとおり、ApplicationクラスのCreateItemメソッドを利用します。
> Applicationオブジェクト.CreateItem( [ItemType] )
引数 ItemType は、作成するItemの種類を示すOlItemTypeクラスの定数
メール(olMailItem)の他に、予定(olAppointmentItem)、連絡先(olContactItem)、タスク(olTaskItem)などが指定可能
■ メール内容の作成
MailItemインスタンスに設定可能な項目の一部を紹介します。
To メールの宛先を表す、セミコロン(;)で区切られた文字列
CC メールのCCを表す、セミコロン(;)で区切られた文字列
BCC メールのBCCを表す、セミコロン(;)で区切られた文字列
Subject メールの件名を表す文字列
Body メールの本文を表す文字列
BodyFormat メール本文の形式を表すOlBodyFormatクラスの定数 テキスト(olFormatPlain)の他に、HTML(olFormatHTML)、リッチテキスト(olFormatRichText)の何れかを指定可能
■ メールの実行
メール送信以外にも指定できる実行モードがあります。
Display メール内容を表示 送信やキャンセルを手動で選択可能
Send メールを送信
Save メールを下書き保存
■ 実行結果
■ まとめ
いかがでしたでしょうか?
今回は、1件分の情報を基にメール作成/送信する仕組みを紹介しましたが、複数の情報に基づいて定型メールを送る場合などはFor文ぶん回せばいいだけですし、随分業務効率を高めることができると思います。この程度ならRPAいらないでしょう♪
次回以降も、苦労した点を備忘録しようと思います。
Commentaires