下記は、Excelの2つのシートを基にOutlookで下書きを作成するプロシージャ「Sub 日報メール作成()」です。
Sub 日報メール作成() 'レポート部分の生成 Dim report As String: report = "" Dim i As Long: i = 2 With Sheet2 Do While .Cells(i, 1).Value <> "" report = report & .Cells(i, 1).Value & "/" report = report & .Cells(i, 2).Value & "/" report = report & .Cells(i, 3).Value & "<br>" i = i + 1 Loop End With 'メールの各要素の生成 With Sheet1 Dim myTo As String: myTo = .Range("B2").Value Dim mySubject As String: mySubject = .Range("B3").Value Dim myBody As String: myBody = "" myBody = myBody & .Range("B4").Value & "<br>" '宛名" myBody = myBody & convertLf(.Range("B5").Value) & "<br>" '書き出し myBody = myBody & report 'レポート myBody = myBody & convertLf(.Range("B6").Value) '締め End With '下書き作成 Dim olApp As Outlook.Application Set olApp = New Outlook.Application Dim myMail As MailItem Set myMail = olApp.CreateItem(olMailItem) With myMail .To = myTo .Subject = mySubject .Display .HTMLBody = myBody & .HTMLBody End With End Sub
「Sub 日報メール作成()」を実行すると、下記のようなメールの下書きがOutlookに作成されます。
下記は、処理の大まかな流れです。
また、上記プロシージャ内で使用している「Function」プロシージャ「convertLf()」は下記になります。
Function convertLf(ByVal str As String) As String convertLf = Replace(str, vbLf, "<br>") End Function
今回作成するメールはHTMLメールです。従って、メール上の「改行」は、Excelのセル内部の改行コード「LF(ラインフィード)」ではなく、HTMLのbrタグで表現する必要があります。
Functionプロシージャ「convertLf()」は、与えられた文字列内の改行コード「LF」を、brタグに置換して返すものです。
Copyright © ITmedia, Inc. All Rights Reserved.