EXCELマクロでメールを作る

PC

こんにちは。テレワーカー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

顧客リストの人数が変わっても、これで大丈夫です。顧客リストの人数分メールを作成するのは、普通に宛先コピペでやると手間がかかるので、自動にすると喜ばれます。

コメント

タイトルとURLをコピーしました