連載
日報メールを半自動化!?――ExcelとVBAで作成するメール作成マクロとは:働く価値を上げる“VBA/GAS”術(11)(2/3 ページ)
時間のかかる業務の代表「メール作成」。中には、定期的かつ毎回同じようなフォーマットで作成、送信するメールもあるのではないでしょうか。今回は、日報を例に、Excelに記入したことを基にメールを作成するVBAを紹介します。
日報メールの自動作成マクロ
下記は、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に作成されます。
下記は、処理の大まかな流れです。
- 「レポート」シートからレポート部分の文字列を生成
- メールの送信先アドレス、件名、本文を文字列として生成
- Outlook.Applicationオブジェクトの生成
- MailItemオブジェクトの処理
┣MailItemオブジェクトの生成
┣送信先アドレス、件名の設定
┣下書きとして表示
┗本文の追加
また、上記プロシージャ内で使用している「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.
関連記事
- 「数百のファイルを1つ1つ開くの面倒……」、複数のExcelデータを1箇所に集約するマクロ術
経費精算書のように「バラバラのデータを1箇所に集約すること」は、多く発生する業務の1つです。しかし、1つ1つのファイルを開きコピー&ペーストするのは手間が掛かる業務。その業務を、マクロを使って自動化する方法を紹介します。 - 「計算式エラーで残業確定……」、GASで入力データのチェックツールを作成
1つのGoogleスプレッドシートを複数人で共同編集するとき、想定していた形式とは違うデータを入力されると、不備が発生してしまう場合があります。そのような問題を、GASで解決するにはどうすればいいのでしょうか。 - プログラム自動実行で仕事を楽に! APIでSlackなどと連携できる「Google Apps Script」とは
日頃発生する“面倒くさい業務”。簡単なプログラミングで効率化できる可能性がある。本稿では、Googleが提供する数々のアプリケーションを操作できる「Google Apps Script」を紹介する。※ショートカットキーの解説あり