こんにちは。テレワーカーYです。
Excelでメールの文面を作ってほしいという依頼は結構多いです。これをご紹介したいと思います。
事前準備として参照設定を行います。「ツール」→「参照設定」で、Microsoft Outlook 16.0 Libraryにチェックを入れてOKを押してください。
サンプルコードは次の通りです。
Public Sub sub_Mail()
Dim objOutlook As Outlook.Application
Dim objMailItem As Outlook.MailItem
Set objOutlook = New Outlook.Application
Set objMailItem = objOutlook.CreateItem(olMailItem)
With objMailItem
.To = "test@test"
.Subject = "タイトル"
.BodyFormat = olFormatPlain
.Body = "本文です"
.Attachments.Add "C:\Users\user\Desktop\添付ファイル.txt"
.Display
End With
Set objMailItem = Nothing
Set objOutlook = Nothing
End Sub
これを実行すると、メールの文面が出来ます。
顧客リストからメールアドレスを差し込む場合のサンプルは、次の通りです。
Private Property Get SHEET_CUSTOMER_LIST() As Worksheet
Set SHEET_CUSTOMER_LIST = ThisWorkbook.Sheets("顧客リスト")
End Property
Public Sub sub_Mail()
Const ROW_CUSTOMER_LIST_START As Long = 1
Const COLUMN_CUSTOMER_LIST_EMAIL As String = "A"
Dim objOutlook As Outlook.Application
Dim objMailItem As Outlook.MailItem
Dim lngRowCustomerList As Long
Set objOutlook = New Outlook.Application
For lngRowCustomerList = ROW_CUSTOMER_LIST_START To SHEET_CUSTOMER_LIST.Range(COLUMN_CUSTOMER_LIST_EMAIL & Rows.Count).End(xlUp).Row
Set objMailItem = objOutlook.CreateItem(olMailItem)
With objMailItem
.To = SHEET_CUSTOMER_LIST.Range(COLUMN_CUSTOMER_LIST_EMAIL & lngRowCustomerList).Value
.Subject = "タイトル"
.BodyFormat = olFormatPlain
.Body = "本文です"
.Attachments.Add "C:\Users\user\Desktop\添付ファイル.txt"
.Display
End With
Set objMailItem = Nothing
Next lngRowCustomerList
Set objOutlook = Nothing
End Sub
顧客リストの人数が変わっても、これで大丈夫です。顧客リストの人数分メールを作成するのは、普通に宛先コピペでやると手間がかかるので、自動にすると喜ばれます。
コメント