VBAでOutlookメールを自動作成する

目次

VBAでOutlookメールを自動作成するメリット

メリットは以下の2つです。

  • 時短になる
  • 誤送信を減らせる

メリット1: 時短になる

たとえば同じ文面のメールを、複数の取引先に送る場合、VBAでメールを自動生成したほうが時短になります。

メリット2: 誤送信を減らせる

VBAでメール作成すると件名や本文はもちろん、宛先やCcも自動で設定されるので誤送信が減ります。

昨今、メール誤送信による事件が後をたちません。

もし毎日決まりきった内容のメールを送っているなら自動化したほうが誤送信のリスクを減らせます。

事前準備:VBAでメール作成するまえに行う参照設定

実際にメールを自動で作る前に参照設定をしましょう。

Excelを開いたら、Alt+F11でVBEを開いてください。

メニューバーの中にある「ツール」→「参照設定」の順にクリックします。

表示された[参照設定 – VBAProject]の[参照可能なライブラリ ファイル]の一覧より、[Microsoft Outlook 1x.0 Object Library]のチェック ボックスをオンにします。

以上で事前準備は完了です。

上記の設定にしておかないと、以下のような「ユーザー定義型は定義されていません。」というエラーが表示されるからです。

注意点:Application.CreateItem(0)はエラーになる

Application.CreateItem(0) を使う、と記載された記事もありますが、私はエラーになりました。

具体的には以下のコードは、エラーになりましたね。

Sub test()
    ' Outlookのメールアイテムオブジェクトを作成
    Dim Mail As Object
    Set Mail = Application.CreateItem(0) ' この文がエラーになる
    ' 以下、省略
End Sub

なので、Application.CreateItem(0) は使わずに、以下で紹介するサンプルコードをご覧ください。

メール用のObject型変数を作り、各要素を設定する

以下のように、まずメール用のObject型変数を作ります。

Sub CreateEmail()
    ' Outlookのメールアイテムオブジェクトを作成
    Dim Mail As Object
    Set Mail = Outlook.CreateItem(olMailItem)

    ' 以下、略
End Sub

Object型というのは、変数のデータ型の一種です。詳しくは以下をご覧ください。

次に、メール用のObject型変数に、「変数. xxx = yyy」 みたいに、値を設定していくわけです。

Sub CreateEmail()
    ' Outlookのメールアイテムオブジェクトを作成
    Dim Mail As Object
    Set Mail = Outlook.CreateItem(olMailItem)

    ' メールの宛先(To)を設定
    Mail.To = "recipient@example.com"

    ' メールの件名を設定
    Mail.Subject = "新しいメールの件名"

    ' 以下、略
End Sub

「変数. xxx = yyy」のxxx の部分は以下のとおり。

コード意味
.To宛先
.Subject件名
.CCCc
.BCCBcc
.Body本文
.HTMLBodyHTML形式の本文
メールのオブジェクト型変数の各要素

サンプルコード

Outlookでメールを作成するためのVBAサンプルコードを以下に示します。

サンプルコード 1: 新しいメールを作成し、宛先と件名を設定

Sub CreateEmail()
    ' Outlookのメールアイテムオブジェクトを作成
    Dim Mail As Object
    Set Mail = Outlook.CreateItem(olMailItem)

    ' メールの宛先(To)を設定
    Mail.To = "recipient@example.com"

    ' メールの件名を設定
    Mail.Subject = "新しいメールの件名"

    ' メールを表示(まだ送信はしない)
    Mail.Display
End Sub

メールの宛先を複数設定する

メールの宛先を複数指定したい場合は、アドレスとアドレスをで区切るだけです。

Mail.To = "recipient@example.com"; "recipient2@example.com"

サンプルコード 2: メールに本文を追加

Sub AddBodyToEmail()
    Dim Mail As Object
    Set Mail = Outlook.CreateItem(olMailItem)

    Mail.To = "recipient@example.com"
    Mail.Subject = "本文を追加したメール"

    ' メールの本文を設定
    Mail.Body = "これはテストメールの本文です。"

    Mail.Display
End Sub

サンプルコード 3: メールにCCとBCCを追加

Sub AddCCandBCCToEmail()
    Dim Mail As Object
    Set Mail = Outlook.CreateItem(olMailItem)

    Mail.To = "recipient@example.com"
    Mail.CC = "cc@example.com"
    Mail.BCC = "bcc@example.com"
    Mail.Subject = "CCとBCCを設定したメール"

    Mail.Body = "このメールにはCCとBCCが設定されています。"

    Mail.Display
End Sub

サンプルコード 4: With, End Withを使う

Sub AddCCandBCCToEmail()
    Dim Mail As Object
    Set Mail = Outlook.CreateItem(olMailItem)

    With Mail
        .To = "recipient@example.com"
        .CC = "cc@example.com"
        .BCC = "bcc@example.com"
        .Subject = "CCとBCCを設定したメール"
        .Body = "このメールにはCCとBCCが設定されています。"
        .Display
    End With
End Sub

上記は、サンプルコード3をWithEnd With を用いて書き直したバージョンです。

Mail オブジェクトに対する設定を With ブロック内で行うこと、Mail. を何度も繰り返し書く必要がなくなり、コードがすっきりとします

サンプルコード 5: HTML形式のメール本文を設定

Sub CreateHTMLEmail()
    Dim Mail As Object
    Set Mail = Outlook.CreateItem(olMailItem)

    Mail.To = "recipient@example.com"
    Mail.Subject = "HTMLメール"

    ' HTML形式でメール本文を設定
    Mail.HTMLBody = "<html><body><h1>これはHTML形式のメールです</h1><p>HTMLタグを使ってフォーマットできます。</p></body></html>"

    Mail.Display
End Sub

サンプルコード 6: メールを自動で送信

Sub SendEmailAutomatically()
    Dim Mail As Object
    Set Mail = Outlook.CreateItem(olMailItem)

    Mail.To = "recipient@example.com"
    Mail.Subject = "自動送信メール"
    Mail.Body = "このメールは自動的に送信されます。"

    ' メールを送信
    Mail.Send
End Sub

上記のように、新規メール画面を開かず送信したい場合は、Display メソッドを書かずに、Send メソッドを書きます。

サンプルコード 6: ファイルを添付する

Sub SendEmailAutomatically()
    On Error Goto ErrHandler

    Dim Mail As Object
    Set Mail = Outlook.CreateItem(olMailItem)

    Mail.To = "recipient@example.com"
    Mail.Subject = "自動送信メール"
    Mail.Body = "このメールは自動的に送信されます。"
    Mail.Attachments.Add "C:\Sample\test.zip" 'ファイル添付
    
    Mail.Display

ErrHandler:
		Msgbox Err.Message
End Sub

ファイルを添付する場合は、上記のように AttachmentsプロパティのAddメソッドを使います。

Addメソッドの引数には、ファイル名をフルパスで指定します。

添付ファイルを追加するときは、エラー処理を記述しておきましょう。
なぜかというと、指定したファイルが見つからなかった場合や、添付ファイルのサイズが許容値を超えている場合にエラーが発生するからです。

エラー処理の詳細は、以下をご覧ください。

サンプルコード 7: Excelに入力した値を使う

Excelに入力した値を使う方法を紹介します。

たとえば以下のように、Excelにメールの宛先や本文などを入力しておきます。

上記のボタンを押すと、以下の関数を実行するとします。

Sub AddCCandBCCToEmail()
    Dim Mail As Object
    Set Mail = Outlook.CreateItem(olMailItem)

    With Mail
        .To = Range("C3").Value
        .CC = Range("C4").Value
        .BCC = Range("C5").Value
        .Subject = Range("C6").Value
        .Body = Range("C7").Value
        .Display
    End With
End Sub

これらのコードサンプルはOutlookのVBAを使用してメールの作成、編集、送信を行う基本的な方法を示しています。これを参考にして、さらに複雑な機能を実装してみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次