Excel に記載されたテンプレートと送信時間をもとに自動的にメールを送信するマクロ


とある Q&A サイトで、テンプレートと送信時間を Excel に記載しておき、それをもとにメールを自動送信したいというご要望がありました。
このような処理は以下のマクロでできます。

' ここをトリプルクリックでマクロ全体を選択できます。
Public Sub SendTemplateByExcel()
    Const EXCEL_FILE = "c:\temp\list.xlsx"
    Const TEMP_FOLDER = "c:\temp\"
    Dim wkBook As Workbook
    Dim wkSheet As Worksheet
    Dim i As Integer
    Dim objItem 'As MailItem
    Set wkBook = GetObject(EXCEL_FILE)
    Set wkSheet = wkBook.Sheets(1)
    i = 2
    While wkSheet.Cells(i, 1) <> ""
        Set objItem = Application.CreateItemFromTemplate(TEMP_FOLDER & wkSheet.Cells(i, 1) & ".oft")
        objItem.DeferredDeliveryTime = FormatDateTime(Now, vbShortDate) & " " & wkSheet.Cells(i, 2).Text
        objItem.Send
        i = i + 1
    Wend
End Sub

このマクロの使い方は以下の通りです。

  1. 以下のような内容の Excel ファイルを "c:\temp\list.xlsx" として用意します。

      A B
    1 ファイル名 送信時間
    2 test1 10:00
    3 test2 11:00
    4 test3 12:00
  2. 宛先や本文などを指定したメールを Outlook のテンプレート ファイル (.OFT) として c:\temp に保存します。ファイル名は Excel で指定したものと同じにします。(1. と 2. の順序は逆でも構いません。)
  3. Outlook で上記のマクロを実行します。

マクロの登録方法やメニューへの追加について

コメントを残す