Outlook×Excel VBAでメール自動送信する方法」

ExcelVBA

・毎日の定型メール、まだ手作業で送っていませんか?

毎日のように送る在宅勤務の開始・終了連絡。 内容はほとんど同じなのに、Outlookを開いて宛先を入力し、件名を書き、本文をコピペして…という作業を繰り返していると、思った以上に時間を奪われます。
しかも、急いでいると宛先ミスや本文の抜け漏れが起きやすく、地味にストレスの原因にもなります。
こうした“定型メールの手間”は、ExcelとOutlookをVBAで連携させるだけで完全に自動化できます。

この記事では次の内容を初心者でもわかるように丁寧に解説します。

  • OutlookとExcelを連携してメールを自動送信する方法
  • Outlookの参照設定
  • 実際に使えるVBAコード
  • Excelシートの設定例
  • 開始/終了メールを切り替える仕組み

毎日の業務連絡をもっとラクにしたい方は、ぜひ参考にしてみてください。

・使用する仕組みの概要

今回紹介する方法では、Excelのボタンをクリックするだけで、Outlookから下記メールを自動送信できます。

  • Excelのシートに入力した宛先・名前・本文を読み取る
  • Outlookでメールを自動生成
  • 本文をパターン別に切り替え(開始/終了など)
  • 添付ファイルの追加も可能
  • ワンクリックで送信まで完了

・事前準備(Outlook参照設定)

Outlookを操作する事前の設定として参照設定を行います。
Excelタブの「開発」→「Visual Basic」→Visual Basicタブの「ツール」→「参照設定」→「Microsoft Outlook ×× Object Library」(××はインストールされているバージョンによって変わります)をチェックしOKをクリックし設定します。

・Excel側の設定例(サンプル送信シート)

B1:送信先メールアドレス
B2:送信者名
C2:Outlookのアカウント名(Outlookに設定されているアカウント)
ボタン1:開始メール送信
ボタン2:終了メール送信

・入力例①(在宅勤務開始ボタン)

Private Sub CommandButton1_Click()
    emailSend 1
End Sub

・入力例②(在宅勤務終了ボタン)

Private Sub CommandButton2_Click()
    emailSend 2
End Sub

・入力例(送信)

Sub emailSend(mode As Integer)
  Dim app As New Outlook.Application 
  Dim mail As Outlook.MailItem 
  Dim messageText As String

  ' メール本文の切り替え   
    Select Case mode
        Case 1
            messageText = "在宅勤務を開始します。"
        Case 2
            messageText = "在宅勤務を終了します。"
    End Select
    
    Set mail = app.CreateItem(olMailItem)

    With mail
        '差出人
        .SendUsingAccount = Session.Accounts(CStr(Range("C2")))
        '宛先
        .To = Range("B1")
        '件名
        .Subject = "在宅勤務連絡"
        'メール本文
        .Body = Range("B2") & "です。" & vbCrLf & vbCrLf & messageText 
        'プレーンテキスト形式設定
        .BodyFormat = olFormatPlain
        '送信(送信せずに下書きしたい場合は.Send → .Save)
        .Send
    End With
    
    Set mail = Nothing
    app.Quit: Set app = Nothing
    
End Sub

・この仕組みが向いている人

  • 毎日同じ業務連絡メールを送っている
  • メール作成の手間を減らしたい
  • 誤送信を防ぎたい
  • Excelで日報や作業記録を管理している
  • Outlookを業務で使っている

・まとめ

OutlookとExcel VBAを組み合わせることで、 「メール作成 → 送信」までの作業を完全自動化できます。

  • 時間の節約
  • ミスの削減
  • 作業の標準化

といったメリットがあり、在宅勤務や定型業務の効率化に最適です。
私の実体験をもとに書いております。
この記事を通してVBAに興味を持っていただけたら幸いです。
ここまでご覧いただき、誠にありがとうございます。

・今回使用したコードの説明

①Dim 変数名① As New Outlook.Application
 インスタンスを生成します。
②Dim 変数名② As Outlook.MailItem
 Outlookのメールであることを表す変数。
③Set 変数名② = 変数名①.CreateItem(olMailItem)
 メールを生成
④変数名②.SendUsingAccount = Session.Accounts(“●●●@gmail.com”)
 差出人を指定します(自分のアドレス等)
⑤変数名②.To = Range(“宛先が入力されているセル”)
 宛先を指定します。
⑥変数名②.Subject = “メールの件名”
 件名を入力します。
⑦変数名②.Attachments.Add Source:=”フォルダ名\ファイル名.pdf”
 メールに添付したいファイルを指定します。
⑧変数名②.Body = “メール本文”
 メール本文を入力します。
⑨変数名②.BodyFormat = olFormatPlain
 メールの本文をプレーンテキスト形式として設定します。
⑩変数名②.Save
 送信(送信せずに下書きしたい場合は.Save、送信したいときは「Send」)

ご注意

・掲載されている内容には細心の注意をしてるつもりですが、
間違いやご指摘等がありましたら、「お問い合わせ」からご連絡をいただけますと幸いです。
・掲載されている入力VBAコード等は動作を保証するものではなく、あくまでサンプルとして掲載しております。
・掲載されている入力VBAコード等は自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
・対応バージョン
 Excel2021、2019、2016

コメント