時間泥棒メール作業を自動化!VBAマクロでOutlookメールを送信する方法【サンプル有り】

はじめに

ビジネスマンにとってメール作業は避けられないものですが、気がつくとあっという間に時間が過ぎている時間泥棒の代表格です。

某調査によると、メールの処理(閲覧・送信)に1日に平均2.8時間もの時間を費やしているという報告もあります。

この面倒なメール作業を自動化する方法はないでしょうか?

本記事ではExcelのVBAからOutlookを操作する基本をご説明します。メール作業の自動化の第一歩を踏み出しましょう!

VBAマクロでOutlookメールを送信する本記事の目的

本記事ではVBAマクロからOutlookを起動してメールを送信する基本的な処理を紹介します。

ただし、本当に送信してしまうと問題がありますので、作成したメールの内容を表示するにとどめます。

本当に送信する場合はサンプルプログラムでコメントアウトされている.sendメソッドの’を外して実行してください。ただしくれぐれも慎重に自己責任でお願いいたします。

VBAマクロでOutlookメールを送信する処理の流れ

処理の流れとしては、

Outlookのメールオブジェクトを作成する

差出人、宛先、件名など各種プロパティを入力する

作成したメールを表示する

メールを送信する(この部分はコメントアウトされているので実行されません)

という流れになります。

VBAマクロでOutlookメールを送信する関数・プロパティなど

MailItem オブジェクト (Outlook)

MailItem オブジェクトにはたくさんのメソッドやプロパティがあります。

リンクのリファレンスにも大量のメソッド、プロパティが紹介されていますが、あまりにも多すぎて読みきれないかもしれません。

代表的な使い方に関しては、これからいくつかの記事で紹介させていただければ、と考えております。

VBAマクロでOutlookメールを送信するサンプルコード

それではサンプルコードです。
コメントアウトしてあるmyMl.sendの部分のコメントを外すと送信されますので注意ください。
Sub 自動メール送信()

    Dim myOL As Outlook.Application
    Dim myML As Outlook.MailItem
    Set myOL = CreateObject("Outlook.Application")
    Set myML = myOL.CreateItem(olMailItem)

    myML.SentOnBehalfOfName = "サンプル太郎<taro@sample.com>"
    myML.To = "sample@sample.com"
    myML.Cc = "sample2@sample.com;xxx3@xxx.com"
    myML.Bcc = ""
    myML.Subject = "sample送信の件"

    myML.Body = "これはsampleです。"

    myML.display
    'myML.send

    Set OL = Nothing
    Set myML = Nothing

End Sub

終わりに

本記事ではVBAマクロからOutlookオブジェクトを作成し、メールを作成して送信する手前までご紹介しました。

あえて送信はせず、送信部分はコメントアウトしました。

冒頭でも触れたとおり、ビジネスマンのメール処理時間は無視することができないレベルの時間泥棒となっています。

この面倒なメール作業を自動化するためにVBAマクロによる自動化は重要な試みだと思います。

本記事ではあくまで基本としてメールの送信(実際はしない)までをご紹介しましたが、次回以降より実用的なメール作業の自動化方法をVBAマクロを通して行う方法を考えていきましょう!