top of page
検索

ExcelでVBA、Outlookでメール自動送信(Applicationオブジェクト)

更新日:2021年9月28日

こんにちは。


「作業報告書の提出状況を確認して、催促メールを自動送信するツールを作ってほしい…」と友人に頼まれ、せこせこと💦


やり方を色々調べていると、Excel VBAからOutlookの機能を活用することで、メール関連の機能を自動化できそうだと分りました。

では、備忘録スタートします。



■ 動作環境

 

OS: Windows 8.1(64ビット)

Excel: 2013(32ビット)

Outlook: 2013(32ビット)



■ VBAの参照設定

 


■ メールの自動送信

 

※これ以降も同様ですが、「m_」で始まる英語大文字の変数名みたいな名称は、何れも私が別途定義している定数です。


処理の流れは次のとおりです。

  1. Outlookを操作するためのApplicationインスタンスを作成(objOutlook)

  2. ApplicationクラスのCreateItemメソッドで、メールを操作するためのMailItemインスタンスを作成(objMail)

  3. メール内容の作成(一例として、ToやSubject、Bodyなどを設定)

  4. メールの実行(一例として、メールを表示する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いらないでしょう♪

次回以降も、苦労した点を備忘録しようと思います。

閲覧数:1,291回0件のコメント

Commentaires


bottom of page