検索
連載

日報メールを半自動化!?――ExcelとVBAで作成するメール作成マクロとは働く価値を上げる“VBA/GAS”術(11)(3/3 ページ)

時間のかかる業務の代表「メール作成」。中には、定期的かつ毎回同じようなフォーマットで作成、送信するメールもあるのではないでしょうか。今回は、日報を例に、Excelに記入したことを基にメールを作成するVBAを紹介します。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
前のページへ |       

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達成。

書籍紹介

ExcelVBAを実務で使い倒す技術

高橋宣成著 秀和システム 1800円(税別)

動くコードが書けたその先、つまり「ExcelVBAを実務で使う」という目的に特化した実践書。ExcelVBAを楽に効果的に使いこなし続けるための知恵と知識、そしてそのためのビジョンと踏み出す勇気を提供する1冊。


詳解! Google Apps Script完全入門 〜Google Apps & G Suiteの最新プログラミングガイド〜

高橋宣成著 秀和システム 2600円(税別)

Google Apps Scriptの完全入門書として、JavaScriptの基本から自作ライブラリまでを徹底解説。これ一冊だけで基礎から実践まで体系的にマスターできます。


Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る