はじめに|Outlook × VBAで業務をもっとラクに!
「毎日似たようなメールを送っている」「報告メールの定型文をコピペするのが面倒」——そんな業務に、VBAでのOutlook自動送信が革命をもたらします。
この記事では、初心者でも使えるOutlookメールの自動送信マクロの作り方を、実例付きで丁寧に解説します。
また、日常業務に効くちょっと便利な小技集も紹介します。
この記事でわかること
- OutlookをVBAから操作する基本構文
- 実際にメールを自動送信するマクロの作り方
- 実務に使える小技(テンプレ・署名の扱いなど)
前提条件と準備
必要な環境
- Microsoft Excel(VBAが使えるバージョン)
- OutlookがインストールされているPC(Office連携が必要)
参照設定の追加
Outlookを操作するには、VBAの参照設定で「Microsoft Outlook XX.X Object Library」を有効にする必要があります。
- VBAエディタ(Alt + F11)を開く
- メニューの「ツール」→「参照設定」へ
Microsoft Outlook XX.X Object Library
にチェックを入れる- 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を一括処理する方法|こうしたスキルが転職で評価される理由
🔗 【辞めても大丈夫】エンジニアが知っておきたい転職準備と退職トラブル回避の技術