ExcelVBAでOutlookの送信メールを作成する

スポンサーリンク

送信メールを作成するVBAコードの作成

前回はOutlookをExcelVBAで操作するための参照設定について記載しました。

今回はOutlookを操作して送信メールを作成するVBAコードを紹介します。

ExcelVBAでOutlookを操作できるようになると、宛先・件名・本文などをExcelのシートに記載された内容から引用し、一度にたくさんのメールを条件分けしながら作成できるようになります。

例えば予定一覧をExcelで作成していれば、その予定表をベースに参加予定者に対して日時の案内メールを一括で送信することができます。
表に何件の案件が記載されていても繰り返しの処理で簡単に一括作成でき、本文や宛先の記載ミスもありません。

私は仕事上、複数の店舗に対してメールをたくさん送る必要 があり、このコードはかなり重宝しています。

Outlookを起動してメールを作成するコード

ExcelVBAでOutlookを起動するためには以下のコードを記載します。
「oItem」という変数にOutlookのメールを格納して、宛先・本文などを記載していきます。

Sub Outlookを起動してメール作成1()
Dim oApp As New Outlook.Application
Dim oItem As Outlook.MailItem
Set oItem = oApp.CreateItem(olMailItem) ’メールを作成します
oItem.To = “宛先”’宛先を入力します
oItem.CC = “CC” ’CCを入力します
oItem.Subject = “件名を入力します”’件名を入力します
oItem.HTMLBody = “<span style=””font-size:10pt;”” >” & “本文を入力します” & “</span>”’本文を入力します
oItem.Attachments.Add “添付ファイルのパスを入力”’ファイルを添付します
oItem.Display’作成したメールを表示します
End Sub

スポンサーリンク

Outlookを起動して連続してメールを作成するコード

連続してメールを作成する場合は以下のようにシートに宛先・CC・件名・本文を書いた一覧を用意するとわかりやすくなります。
一気に作成できるので、作成漏れがなくなり、便利になります。

52-001

上のシートを元に宛先に対して連続でメールを作成するVBAコードは以下のようになります。

Sub Outlookを起動してメール作成2()
Dim oApp As New Outlook.Application
Dim oItem As Outlook.MailItem
Dim i As Integer
Dim WSH As Variant
Set WSH = CreateObject(“Wscript.Shell”)
Dim DesktopPath As String
DesktopPath = WSH.SpecialFolders(“Desktop”)’デスクトップのパスを取得します。
i = 2
Do Until Cells(i, 1) = “”’セルの1列目が空欄になるまで繰り返します
Set oItem = oApp.CreateItem(olMailItem)
oItem.To = Cells(i, 1)’宛先は氏名を入れて「名前の確認」をクリックすることでアドレス一覧から選択できます。
oItem.CC = Cells(i, 2)
oItem.Subject = Cells(i, 3)
oItem.HTMLBody = “<span style=””font-size:10pt;””>” & Cells(i ,1)& “様<br /><br />”& _
“いつもお世話になっております。<br />” & Replace(Cells(i, 4), vbLf, “<br />”) & “</span>”
’1行目に宛先の名前を持ってきて「様」をつけます。
’Excelシート上の改行は「vbLf」でメールの本文のHTMLの改行は「<br />」のため置換します
If Cells(i, 5) <> “” Then’添付ファイルが記載されているなら
oItem.Attachments.Add DesktopPath & “” & Cells(i, 5) ’ファイルを添付します
End If
oItem.Display
i = i + 1
Loop
End Sub

このコードを実行すると一括でたくさんのメールを作成することができます。
同じ処理を繰り返し行う場合などに有効です。

コメント

  1. vba初心者 より:

    エクセルのセルに「2017/07/10」
    こんな感じに日付を入力し指定した日付に
    自動でメールを送信してくれるVBAのプログラム
    ってどんな感じになるんでしょうか?

    • okumasahito より:

      コメントありがとうございます。
      作成したメールに指定時刻の送信機能をつけるには以下のコードを追加します。
      本文で書いているOutlookを起動してメール作成2のコードに追加して、F列に日付を入力してください。
      送信トレイに残った状態で保存され、日付を過ぎると送信されるようになると思います。
      ぜひ試してみてください。

      oItem.DeferredDeliveryTime = Year(Cells(i, 6)) & “/” & Month(Cells(i, 6)) & “/” & Day(Cells(i, 6)) & ” 0:00:00″