VBAによるOutlookの操作方法を中心に、ポイントを解説します。
今回は、Outlookアプリケーションを用意し、VBAから操作します。それを行っているのが、下記です。
Dim olApp As Outlook.Application Set olApp = New Outlook.Application
これにより、新しい「OutlookApplication」オブジェクトが生成され、「olApp」という変数名で扱えるようになります。
続いて、下記のステートメントを解説します。
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オブジェクトについて、送信先アドレス、件名、本文などを指定し、入力している部分が下記です。
With myMail .To = myTo .Subject = mySubject .Display .HTMLBody = myBody & .HTMLBody End With
「To」プロパティ、「Subject」プロパティ、「HTMLBody」プロパティはそれぞれ、MailItemオブジェクトの送信先アドレス、件名、HTML本文を指定するプロパティです。同様に、「CC」プロパティや「BCC」プロパティなども存在しています。
もろもろの設定が完了したら、その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.