VBAマクロとOutlookでExcelからメールを一括送信する方法
Excelのスプレッドシートにまとめられたユーザーリストに対して、一人ひとり異なる情報を含んだメールを送信したい——こんな場面は業務でよくあるものです。本記事では、パソコンに設定済みのOutlookプロファイルを使ってメールを送信するVBAマクロの作成方法を、実際のコード例とともに分かりやすく解説します。
前提となるExcelデータの例
今回は、次のような列構成のExcelファイルを想定します。
メールアドレス | 氏名 | 最終パスワード変更日時 | アカウント状態

このリストに登録された各ユーザーに対して、以下のテンプレートに基づくメールを送信するのが目的です。
件名:woshub.comドメインにおけるアカウント状況のお知らせ
本文:%FullUsername% 様
woshub.comドメインのアカウントは現在「%status%」の状態です。
最終パスワードの変更日時は %pwdchange% です。
マクロの作成手順
1. マクロを新規作成する
Excelの「表示」→「マクロ」を開き、マクロ名に send_email と入力して「作成」をクリックします。

2. VBAコードを貼り付ける
表示されたVBAエディターに、以下のコードをコピーして貼り付けてください(処理内容はコメントで説明しています)。メール送信の自動化には、VBAスクリプト内でOutlookオブジェクトを生成・操作できる CreateObject("Outlook.Application") 関数を使用します。
重要: 送信元のパソコンにはOutlookプロファイルが事前に設定されている必要があります。このメールボックス(メールアドレス)が差出人として使用されます。
Sub send_email()
Dim olApp As Object
Dim olMailItm As Object
Dim iCounter As Integer
Dim Dest As Variant
Dim SDest As String
' 件名を設定
strSubj = "Your account status on woshub.com domain"
On Error GoTo dbg
' Outlookオブジェクトを新規作成
Set olApp = CreateObject("Outlook.Application")
For iCounter = 1 To WorksheetFunction.CountA(Columns(1))
' Outlookに新しいメールアイテムを作成
Set olMailItm = olApp.CreateItem(0)
strBody = ""
useremail = Cells(iCounter, 1).Value
FullUsername = Cells(iCounter, 2).Value
Status = Cells(iCounter, 4).Value
pwdchange = Cells(iCounter, 3).Value
' メール本文を組み立てる
strBody = "Dear " & FullUsername & vbCrLf
strBody = strBody & " Your account in woshub.com domain is in " & Status & " state" & vbCrLf
strBody = strBody & "The date and time of the last password change is " & pwdchange & vbCrLf
olMailItm.To = useremail
olMailItm.Subject = strSubj
olMailItm.BodyFormat = 1
' 1=テキスト形式、2=HTML形式
olMailItm.Body = strBody
olMailItm.Send
Set olMailItm = Nothing
Next iCounter
Set olApp = Nothing
dbg:
' エラーがあれば表示する
If Err.Description <> "" Then MsgBox Err.Description
End Sub

3. マクロ有効ブックとして保存して実行する
Excelファイルを .xlsm 形式(マクロ対応ブック形式)で保存します。メールを送信する際は、作成したプロシージャ(マクロ)を選択し、「実行」をクリックしてください。

マクロはワークシートの各行を先頭から順番に読み込み、リストに登録されたすべての宛先に対してメールを自動的に生成・送信していきます。
実行時の注意点
- 誤送信を防ぐため、まず数行程度のテストデータで動作を確認してから、本番のリストで実行することをおすすめします。
- セキュリティ設定によっては、Outlook側で「他のプログラムからのメール送信を許可するか」といった警告が表示される場合があります。あらかじめポリシーを確認しておきましょう。
- 大量のメールを短時間に連続送信すると、メールサーバーや受信側でスパムと判定される可能性があるため、必要に応じて送信間隔を設けるなどの工夫を行ってください。
-
Outlook Webからメールを保存する方法
Outlook Webアプリは、Outlookメールサービスを利用するための優れたツールです(もう一つの選択肢はOutlook PCアプリ)。メールへのアクセスや管理をスムーズに行えるのが魅力です。Gmailとは異なり、Outlook Webアプリでは、フォルダ、カテゴリ、検索フォルダなど、多彩な方法でデータを整理・分類することができます。とはいえ、時にはOutlook Web上のメールをPCに保存しておきたい場面もあるでしょう。この記事では、その具体的な方法をご紹介します。Outlook Webからメールを保存する手順Outlook Webのメールを保存するのは、実はとてもシンプルな作業です
-
GmailとOutlookで暗号化メールを安全に送信する方法を徹底解説
セキュリティは、現代社会における最大の関心事の一つです。SNSであれメールであれ、プライバシーへの脅威は常にインターネット上に潜んでいます。そのため、悪質なサイバー犯罪者から大切な情報を守るために、メールを暗号化することが非常に重要になっています。 メールの送受信は私たちの日常的なタスクです。だからこそ、添付ファイルやメール本文をしっかりと暗号化して保護する意識を持つ必要があります。例えば、ProtonMailのようなアプリを使えば、送信するメールが自動的に暗号化されるため安心です。しかし、普段使っているOutlookやGmailで安全なメールを送る方法をご存知でしょうか? 本記事では、暗号化