シュンカの日記

基本的に書きたいことを書いていくスタイル。

Outlookの定型メールをワンクリックで自動作成する方法(VBA+Outlook)

【スポンサーリンク】

バックオフィスや事務作業担当の方は、定期的に同じようなメールを打つことが多いのではないでしょうか。
リマインドメールとか、会議のメモとか、資料作成依頼メールとか・・・

かくいう僕も雑用マンなので、同じようなメール作成が定期的に発生します。

もし、あなたがMS OfficeのOutlookでメールを作成しているのであれば、VBAを使わない手はないです。簡単に作業の自動化ができます。

というわけで今回は、VBAを使って定型メールをワンクリックで作成する方法を説明します。
VBAコードを書きますが、コピペでイケます。

(バージョンはあまり関係ないと思いますが、一応Office2013を使って説明することを断っておきます。)

準備

VBAのコードの書き方、動かし方はここでは説明しません。ググればたくさんでてきます。


まずですが、VBAからOutlookを操作できるように参照設定をいじる必要があります。
ツール→参照設定
f:id:nukano0522:20170605223658p:plain


すると、下記のような画面が現れるので、「Outlook Object Library」にチェックをいれてOKとします。
f:id:nukano0522:20170605224024p:plain


これで、VBAからOutlookを操作できるようになりました。

VBAコード

基本的に以下のコピペでいけます。
赤字部分(宛先とか本文)は適宜書き換えてください。

'''VBAからOutlookメールを作成する'''
Sub CreateMail()  '関数名は何でもOK

    Dim tol As Outlook.Application
    
    'Outlookのオブジェクトを生成する
    Set tol = CreateObject("Outlook.Application")
    
    ' メールを作成する
    With tol.CreateItem(0)
        .To = "****@****.com"            ' 宛先
        .CC = "****@****.com"            ' Cc
        .Subject = "○×△会議の議事録"          ' 件名
        .Display                         ' 表示
        .Body = "○○様" & vbCrLf & vbCrLf & _
        "お世話になっております。★★です。" & vbCrLf & vbCrLf & _
        "○×△会議の議事録を送ります。" & vbCrLf & vbCrLf & _
        "よろしくお願いいたします。" & vbCrLf & vbCrLf    '本文
    End With
    
    Set tol = Nothing
End Sub

ちなみに、「vbCrLf」で一行改行をいれてくれます。

このコードを実行してみると、以下のような新規メールが作成されます。
f:id:nukano0522:20170605224738p:plain

応用例

例えば、以下みたいにExcelシートに定型メールのパターンをいくつか設定しておくと作業が捗るのではないでしょうか。
f:id:nukano0522:20170605225154p:plain

日付やファイルの格納先といった、時と場合によって表現を変えたい部分も出てくるかと思います。そういったものはExcelのセルに記入してから、マクロ実行ボタンを押すなりするのがいいでしょう。

上記例だと、以下のようなVBAを「メール作成」ボタンに設定しておきます。
(赤字部分でExcelのセルを指定)

'''VBAからOutlookメールを作成する'''
Sub CreateMail()  '関数名は何でもOK

    Dim tol As Outlook.Application
    
    'Outlookのオブジェクトを生成する
    Set tol = CreateObject("Outlook.Application")
    
    ' メールを作成する
    With tol.CreateItem(0)
        .To = "****@****.com"            ' 宛先
        .CC = "****@****.com"            ' Cc
        .Subject = Range("B3").Text & "○×△会議の議事録"          ' 件名
        .Display                         ' 表示
        .Body = "○○様" & vbCrLf & vbCrLf & _
        "お世話になっております。★★です。" & vbCrLf & vbCrLf & _
        "○×△会議の議事録を送ります。" & vbCrLf & _
        "格納場所:" & Range("B4").Text & vbCrLf & _
        "よろしくお願いいたします。" & vbCrLf & vbCrLf    '本文
    End With
    
    Set tol = Nothing
End Sub


これを実行すると、以下のようなメールが新規作成されます。B3セルとB4セルの値がメールに反映されます。
f:id:nukano0522:20170605225547p:plain



まぁ、結局Excelに手入力しているわけなので、Outlookに直接書くのと変わんないじゃんと言われたらそれまでなんですが・・・

Outlookでいちいち使い回せるメールを探して本文や件名を直すよりかは、Excelシートで定型メールを一括管理したほうが気持ち的に楽だし、ミスも減らせるような気がします。

おまけ

「送信まで自動化したい」という人もいるかと思います。
残念ながら、Office自体に自動送信できる仕組みはないようです。

が、Outlookメールを送信するバッチファイルを作って、Windowsのタスクスケジューラーで動かす、というやり方はあるみたいです。
下記サイトのやり方を試してみたらうまくいきました。
決まった時間に添付ファイル付きのメールを自動送信するためのスクリプトoutlooklab.wordpress.com


送信まで自動でやるのはちょっと怖い(祝日の送信とかは避けたいし、なんだかんだで送信前に文面を一度確認しておきたい)ので僕はやりませんが、興味のある方はどうぞ。


以上です。