とある 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
このマクロの使い方は以下の通りです。
- 以下のような内容の Excel ファイルを "c:\temp\list.xlsx" として用意します。
A B 1 ファイル名 送信時間 2 test1 10:00 3 test2 11:00 4 test3 12:00 - 宛先や本文などを指定したメールを Outlook のテンプレート ファイル (.OFT) として c:\temp に保存します。ファイル名は Excel で指定したものと同じにします。(1. と 2. の順序は逆でも構いません。)
- Outlook で上記のマクロを実行します。