【VBA×Outlook】メールの自動送信マクロ作成ガイド|日常業務に差をつける小技集

はじめに|Outlook × VBAで業務をもっとラクに!

「毎日似たようなメールを送っている」「報告メールの定型文をコピペするのが面倒」——そんな業務に、VBAでのOutlook自動送信が革命をもたらします。

この記事では、初心者でも使えるOutlookメールの自動送信マクロの作り方を、実例付きで丁寧に解説します。
また、日常業務に効くちょっと便利な小技集も紹介します。


この記事でわかること

  • OutlookをVBAから操作する基本構文
  • 実際にメールを自動送信するマクロの作り方
  • 実務に使える小技(テンプレ・署名の扱いなど)

前提条件と準備

必要な環境

  • Microsoft Excel(VBAが使えるバージョン)
  • OutlookがインストールされているPC(Office連携が必要)

参照設定の追加

Outlookを操作するには、VBAの参照設定で「Microsoft Outlook XX.X Object Library」を有効にする必要があります。

  1. VBAエディタ(Alt + F11)を開く
  2. メニューの「ツール」→「参照設定」へ
  3. Microsoft Outlook XX.X Object Library にチェックを入れる
  4. OKをクリック

基本:メール自動送信のサンプルコード

Sub SendOutlookMail()
    Dim olApp As Object
    Dim olMail As Object

    ' Outlookアプリケーションの起動
    Set olApp = CreateObject("Outlook.Application")
    Set olMail = olApp.CreateItem(0) ' 0はMailItem

    With olMail
        .To = "example@example.com"
        .CC = ""
        .BCC = ""
        .Subject = "【自動送信】本日の進捗報告"
        .Body = "お疲れ様です。" & vbCrLf & _
                "本日の進捗は以下の通りです。" & vbCrLf & _
                "・〇〇の対応完了" & vbCrLf & _
                "・△△は引き続き調整中です" & vbCrLf & _
                "よろしくお願いいたします。"

        ' 添付ファイルがある場合
        '.Attachments.Add "C:\Users\YourName\Documents\report.xlsx"

        .Send ' 送信
    End With

    MsgBox "メールを送信しました", vbInformation
End Sub

応用編:テンプレート×変数で効率UP

Excelのセルを参照して、宛先や本文を動的に変えることも可能です。

Sub SendMailFromSheet()
    Dim olApp As Object, olMail As Object
    Dim toAddress As String, subjectText As String, bodyText As String

    ' シートから読み込み
    toAddress = Sheets("Mail").Range("B2").Value
    subjectText = Sheets("Mail").Range("B3").Value
    bodyText = Sheets("Mail").Range("B4").Value

    Set olApp = CreateObject("Outlook.Application")
    Set olMail = olApp.CreateItem(0)

    With olMail
        .To = toAddress
        .Subject = subjectText
        .Body = bodyText
        .Send
    End With

    MsgBox "送信完了!", vbInformation
End Sub

📌 ポイント:
Excel側に「テンプレート表」を作っておけば、複数人への一括送信も可能!


小技①:署名を本文に追加する方法

Outlookの既定署名を自動で挿入したい場合は、HTML形式で署名を取得します。少し高度な技ですが、以下のように扱えます

.BodyFormat = 2 ' 2 = HTML
.HTMLBody = "<p>お疲れ様です。進捗報告です。</p>" & .HTMLBody

小技②:メールを送信せず「下書き保存」する方法

.Save ' ←送信せず下書き保存するだけ

「確認してから手動で送信したい」というケースに便利です。


小技③:複数人に同じ内容を一斉送信(BCC活用)

.BCC = "a@example.com; b@example.com; c@example.com"

他の受信者を見せたくない場合は、BCCに一括入力がスマート。


エラー対策と注意点

  • Outlookがインストールされていない環境では動作しません
  • セキュリティ設定によっては、警告ポップアップが表示される場合があります
  • .Send の代わりに .Display を使えば確認画面が出ます

まとめ|VBAで“送信作業”にさよならを

メール送信作業を手動で繰り返すのは、時間も集中力も奪われがち。
VBAを使ってOutlookメールを自動化すれば、毎日の業務に“自分の時間”を取り戻せます。

今回紹介したマクロは、どれも実務にすぐ活用できるレベル。
「テンプレ化 → 自動送信」の流れを構築して、一段上の業務効率化を実現しましょう!


次に読みたい

🔗 【爆速業務術】VBAでフォルダ内のExcelを一括処理する方法|こうしたスキルが転職で評価される理由
🔗 【辞めても大丈夫】エンジニアが知っておきたい転職準備と退職トラブル回避の技術

タイトルとURLをコピーしました