やろまい

国立院卒の理系君がプログラム書いたり、株式投資したり、簿記を学んだり。

はじめましての人へ(サイト紹介)
ツイッター→ 招き猫ファイナンス

【便利な使い方も】VBAを使ってメールを自動作成する方法

f:id:hamahiro881477:20200820160038p:plain

VBAを使ってメールの作成をしたことがありますか?

Outlookのオブジェクトを使用すると結構簡単にメール作成ができます。

 

今回はメール作成のやり方と便利な使い道を紹介します。

 

使い道は意外と思いつかないと思うのですが、そのヒントとなる考え方を紹介します。

私は1つだけ相性の良い業務があったので、そのマクロを重宝しています。

この記事を参考に、自動化できる業務を探してみてはどうでしょう。

 

こんな人に向けた記事です。

  • メールの自動送信をしたい 
  • 同じメールを繰り返し送信している
  • Excelのデータを引用してメールを作りたい

 

やり方を知っている方は便利な使い方から読んでください。

VBAでメールを自動作成する方法

まずはライブラリにチェックを

プログラムの作成の前に、Outlookオブジェクトのライブラリにチェックを入れましょう。

f:id:hamahiro881477:20201121015259p:plain

上の図のようにツール⇒参照設定を押します。

 

 f:id:hamahiro881477:20201118150845p:plain

ライブラリ一覧が表示されるので、その中から「Microsoft Outlook xx.x Object Library」にチェックを入れてOKを押します。(xx.xにはバージョンの値が入る)

 

これでライブラリの設定は完了です。

 

VBAプログラムの書き方

先にメールを自動作成するサンプルプログラムを紹介します。

Sub MakeEmail()

  Dim objOutlook As Outlook.Application
  Dim objMail As Outlook.MailItem
  Dim shtMail As Worksheet: Set shtMail = ThisWorkbook.Sheets("メール内容")

  'Outlookオブジェクト/MailItemオブジェクトの作成
  Set objOutlook = New Outlook.Application
  Set objMail = objOutlook.CreateItem(olMailItem)

  With objMail
    .To = shtMail.Cells(1, 1).Value 'メール宛先
    .Subject = shtMail.Cells(2, 1).Value 'メール件名
    .BodyFormat = olFormatPlain 'メールの形式
    .Body = shtMail.Cells(3, 1).Value 'メール本文
    .Display ' メール作成画面の表示
    '.Send 'メール送信
  End With

  Set objOutlook = Nothing

End Sub

Outlookオブジェクト(objOutlook)とMailItem オブジェクト(objMail)という2つのオブジェクトを作成しています。

 

Outlookオブジェクトは文字通りOutlookを操るために必要なオブジェクトです。

MailItemオブジェクトはOutlookの中のメールを操作するのに必要なオブジェクトです。

今回はメールですが、操作したい内容に応じてCreateItemメソッドの引数を変更します。

作成するオブジェクト 引数 操作したい内容
MailItem olMailItem メール
AppointmentItem olAppointmentItem 予定
ContactItem olContactItem 連絡先
TaskItem olTaskItem タスク

 

また、With文の中でメールの内容を指示しています。

  With objMail
    .To = shtMail.Cells(1, 1).Value 'メール宛先
    .Subject = shtMail.Cells(2, 1).Value 'メール件名
    .BodyFormat = olFormatPlain 'メールの形式
    .Body = shtMail.Cells(3, 1).Value 'メール本文
    .Display ' メール作成画面の表示
    '.Send 'メール送信
  End With

 

各プロパティに値を設定することで宛先、件名、本文を自動入力することができます。

今回は「メール内容」シートの各セルの値を入力しました。

f:id:hamahiro881477:20201118151449p:plain

Sendメソッドはコメントアウトしていますが、このコメントを外せばそのまま送信することができます。

 

f:id:hamahiro881477:20201118150858p:plain

このマクロを実行すると画像のようにOutlookのメール送信画面が立ち上がります。

宛先、件名、メール本文にはそれぞれ「メール内容」シートの値が入ります。

 

このようにシート上の情報から自動的にメール文を作成することができます。

 

便利な使い方

メールの自動作成を活用するには、大きく次の4つがポイントになります。

  1. 文字列をつなげる
  2. 納期の自動計算
  3. 宛先が多数の場合
  4. 署名の使い分け

 

具体的には、次のようなニーズと相性が良いです。

  1. Excelシート上の文字列をつなぎ合わせて本文を作成したり、
  2. Date型を使って納期を自動計算したり、
  3. 毎回同じ人にメールを送信していたり、
  4. 社内、社外向けで署名を使い分けたりしたい。

 

私も利用例は少ないのですが、1件大きな効果を挙げたケースがありみあす。

 

シートの上の商品名などを使って依頼メールを作成するもので、年間120時間の業務削減に成功しました。

回答納期などもVBA内で自動計算できるため、手入力でミスすることもなくなりました。

 

Excel情報を転記してメール作成する業務があれば自動化できる可能性が高いため、いろいろと活用してみてください。