仕事で繰り返し送るメールを自動化したい――そんな方におすすめなのが、VBA(Visual Basic for Applications)からOutlookを操作してメールを送信する方法です。
Excelからデータを読み取って、自動でメールを作成・送信することで、業務効率が大幅にアップします。
本記事では、OutlookをVBAで操作する基本手順と、実務で使える活用例を丁寧に解説します。
1. OutlookをVBAで操作する準備
参照設定を追加しよう
まずは、VBAからOutlookを操作するために、以下の設定が必要です。
- Excelで「Alt + F11」でVBE(VBAエディタ)を開く
- メニューから「ツール」→「参照設定」を選択
- 一覧から
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の値を元に、自動メール送信システムも構築可能です。
業務効率化の第一歩として、ぜひ一度お試しください!