【保存版】OutlookをVBAで操作してメール送信する基本手順と活用例

仕事で繰り返し送るメールを自動化したい――そんな方におすすめなのが、VBA(Visual Basic for Applications)からOutlookを操作してメールを送信する方法です。
Excelからデータを読み取って、自動でメールを作成・送信することで、業務効率が大幅にアップします。

本記事では、OutlookをVBAで操作する基本手順と、実務で使える活用例を丁寧に解説します。


1. OutlookをVBAで操作する準備

参照設定を追加しよう

まずは、VBAからOutlookを操作するために、以下の設定が必要です。

  1. Excelで「Alt + F11」でVBE(VBAエディタ)を開く
  2. メニューから「ツール」→「参照設定」を選択
  3. 一覧から
     Microsoft Outlook XX.X Object Library(バージョンは環境による)
     をチェックして「OK」をクリック

2. 基本のメール送信コード

まずは、最もシンプルなメール送信コードを紹介します。

Sub SendMailBasic()
    Dim outlookApp As Outlook.Application
    Dim mailItem As Outlook.MailItem

    Set outlookApp = New Outlook.Application
    Set mailItem = outlookApp.CreateItem(olMailItem)

    With mailItem
        .To = "example@example.com"
        .Subject = "テストメール"
        .Body = "これはVBAから送信したメールです。"
        .Send ' 送信(.Displayにすれば確認画面を表示)
    End With

    Set mailItem = Nothing
    Set outlookApp = Nothing
End Sub

3. 件名・本文・宛先の指定方法

宛先の複数指定

.To = "user1@example.com; user2@example.com"

CCやBCCを使う

.CC = "cc@example.com"
.BCC = "bcc@example.com"

本文に改行を入れる

.Body = "本文1行目" & vbCrLf & "本文2行目"

4. 添付ファイルをつける方法

.Attachments.Add "C:\Users\yourname\Documents\ファイル名.xlsx"

複数ファイルも同様に .Attachments.Add を繰り返せばOKです。


5. 活用例:Excelの内容をメール本文に自動反映

以下は、ExcelのセルA1〜A3の内容を本文に挿入する例です。

Sub SendMailWithExcelData()
    Dim outlookApp As Outlook.Application
    Dim mailItem As Outlook.MailItem
    Dim ws As Worksheet

    Set ws = ThisWorkbook.Sheets("Sheet1")
    Set outlookApp = New Outlook.Application
    Set mailItem = outlookApp.CreateItem(olMailItem)

    With mailItem
        .To = ws.Range("A1").Value
        .Subject = ws.Range("A2").Value
        .Body = "ご担当者様" & vbCrLf & vbCrLf & ws.Range("A3").Value
        .Display ' 内容確認用(送信する場合は .Send)
    End With

    Set mailItem = Nothing
    Set outlookApp = Nothing
End Sub

6. よくあるエラーと対処法

エラー内容原因対処法
参照設定がないOutlookライブラリ未設定VBEで参照設定を追加
.CreateItemでエラーOutlookがインストールされていないOutlookのインストールが必要
.Sendで送信できないセキュリティ警告.Displayに切り替え手動送信に

7. まとめ

VBAでOutlookを操作すれば、日々のルーチンワークを効率化できます。
基本の構文に慣れれば、データベースやExcelの値を元に、自動メール送信システムも構築可能です。

業務効率化の第一歩として、ぜひ一度お試しください!

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