日報メールを半自動化!?――ExcelとVBAで作成するメール作成マクロとは:働く価値を上げる“VBA/GAS”術(11)(3/3 ページ)
時間のかかる業務の代表「メール作成」。中には、定期的かつ毎回同じようなフォーマットで作成、送信するメールもあるのではないでしょうか。今回は、日報を例に、Excelに記入したことを基にメールを作成するVBAを紹介します。
OutlookApplicationオブジェクトとその生成
VBAによるOutlookの操作方法を中心に、ポイントを解説します。
今回は、Outlookアプリケーションを用意し、VBAから操作します。それを行っているのが、下記です。
Dim olApp As Outlook.Application Set olApp = New Outlook.Application
これにより、新しい「OutlookApplication」オブジェクトが生成され、「olApp」という変数名で扱えるようになります。
CreateItemメソッドでMailItemオブジェクトを作成する
続いて、下記のステートメントを解説します。
Set myMail = olApp.CreateItem(olMailItem)
「CreateItem」メソッドは、OutlookApplicationオブジェクト上に、新しく「Outlookアイテム」を作るメソッドです。
OutlookApplicationオブジェクト.CreateItem(アイテムタイプ)
CreateItemメソッドで作成できるアイテムには、幾つかの種類があります。どの種類のアイテムを作成するかは、下記の表の引数に与える値で決定します。
アイテムの種類 | オブジェクト | 定数名 | 値 |
---|---|---|---|
メール | MailItem | olMailItem | 0 |
予定 | AppointmentItem | olAppointmentItem | 1 |
連絡先 | ContactItem | olContactItem | 2 |
タスク | TaskItem | olTaskItem | 3 |
今回は、新しいメールを作成するので、引数として指定する定数は「olMailItem」、生成されるオブジェクトは「MailItem」オブジェクトになります。
MailItemオブジェクトのプロパティを設定する
作成したMailItemオブジェクトについて、送信先アドレス、件名、本文などを指定し、入力している部分が下記です。
With myMail .To = myTo .Subject = mySubject .Display .HTMLBody = myBody & .HTMLBody End With
「To」プロパティ、「Subject」プロパティ、「HTMLBody」プロパティはそれぞれ、MailItemオブジェクトの送信先アドレス、件名、HTML本文を指定するプロパティです。同様に、「CC」プロパティや「BCC」プロパティなども存在しています。
MailItemオブジェクトを表示する
もろもろの設定が完了したら、そのMailItemオブジェクトを下書きとして表示します。その処理を行うのが、「Display」メソッドです。
MailItemオブジェクト.Display
プロシージャ「Sub 日報メール作成()」では、Displayメソッドの後に、HTML本文を指定するHTMLBodyプロパティを指定しています。この順番に違和感を覚えるかもしれませんが、これは「既定の署名」を表示するためです。
Displayメソッドが実行されると、自動でHTML本文に既定の署名が呼び出される特性があります。しかし、HTMLBodyによりHTML本文に値が入った状態で、Displayメソッドを実行しても署名は反映されません。そのため、一度Displayメソッドを実行し、既定の署名をHTML本文に表示させてから、HTMLBodyでメール本文を挿入しています。
マクロ全体を確認
解説は以上です。再度、プロシージャ「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
次回は
今回は、Excel VBAで日報メールの下書き作成マクロを作成しました。1回当たりは小さな作業の効率化でも、毎日のように積み重なると大きな差を生み出します。ぜひ、活用してみてください。
次回は、日報メールの下書き作成マクロをGASで作成する方法を紹介します。
著者プロフィール
高橋宣成
プランノーツ 代表取締役
「ITを活用して日本の『働く』の価値を高める」をテーマに、ExcelやVBA、G Suite、Google Apps Script、クラウドなどによる企業または個人事業主向けのシステムおよびツールの開発やコンサルティング、セミナー講師などを務める。「IT×働き方」をテーマに運営するブログ「いつも隣にITのお仕事」は月間60万PV達成。
書籍紹介
高橋宣成著 秀和システム 1800円(税別)
動くコードが書けたその先、つまり「ExcelVBAを実務で使う」という目的に特化した実践書。ExcelVBAを楽に効果的に使いこなし続けるための知恵と知識、そしてそのためのビジョンと踏み出す勇気を提供する1冊。
詳解! Google Apps Script完全入門 〜Google Apps & G Suiteの最新プログラミングガイド〜
高橋宣成著 秀和システム 2600円(税別)
Google Apps Scriptの完全入門書として、JavaScriptの基本から自作ライブラリまでを徹底解説。これ一冊だけで基礎から実践まで体系的にマスターできます。
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」を紹介する。※ショートカットキーの解説あり