エクセルでできる期限通知メールの設定方法を解説!

「エクセルでタスク管理をしているけど、ついつい期限を見逃してしまう…」
「メンバーへのリマインドメール、毎回手作業で作るのは正直大変…」
もし期限を通知するリマインドメールについて悩んでいるなら、きっと本記事が役に立つはずです。
実は、エクセルを活用するだけで、期限が近づいたタスクを自動でメール通知する仕組みが作れますよ。
本記事では、エクセルを使った期限通知メールの設定方法を解説し、具体的な手順や注意点も紹介します。
エクセルに苦手意識がある人でも、読み終えるころには、「これなら自分にもできそう!」と思えるかもしれません。
タスクの見逃しとは無縁の、快適なエクセルライフを目指しましょう。
エクセルで期限の通知メールを送信する方法一覧

エクセルを使って期限の通知メールを送る方法は、主に2つあります。
1つ目は、エクセルのVBA(Visual Basic for Applications)とOutlookを連携させて自動でメールを送信する方法。
エクセルに標準で搭載されているプログラミング機能を活用し、メール送信のタイミングや内容を細かく設定できます。
2つ目は、Microsoftが提供するPower Automateというクラウドサービスを利用した自動化です。
プログラミングの知識がなくても、画面上で設定を組み合わせるだけでOK。
エクセルの情報を基にしたメール送信を自動化できますよ。
それぞれ特徴が異なるので、自身のスキルや環境に合わせて選んでください。
次章からは、2つの自動メール送信方法について、それぞれの特徴や設定手順を詳しく解説していきます。
エクセルとVBAを使った自動メール送信の方法

エクセルのVBA機能を使って、期限が迫ったタスクの情報を自動でメール送信する設定方法を見ていきましょう。
少し専門的に聞こえるかもしれませんが、サンプルコードを使えば意外と簡単に設定できますよ。
VBAとは?
VBAは、「Visual Basic for Applications」の頭文字をとった略語。
エクセルを始めとするMicrosoftのアプリケーションに組み込まれた、プログラミング言語のことです。
VBAを使うと、エクセルでの作業を自動化したり、より高度な処理を実現したりできますよ。
難しそうに感じるかもしれませんが、大変便利なツールです。
VBAの力を借りて、従来は手作業でやっていた定型的な作業をエクセルにお任せしてしまいましょう。
VBAでのメール送信手順
実際にVBAを使ってメールを送信するための手順を確認していきます。
Outlookについては、あらかじめメールアカウント設定を完了させておいてください。
まず、エクセルの画面で 「開発」タブから「Visual Basic」を選択し、VBAエディタを開きましょう。
Alt キーを押しながら F11 キーを押してもOKです。

VBAエディタが開いたら、メニューバーの「ツール」から「参照設定」を選択してください。
「参照設定」ダイアログボックスが表示されます。

一覧の中から「Microsoft Outlook XX.X Object Library」を探し、チェックを入れましょう。
(「XX.X」の部分は、Outlookのバージョンによって数字が異なります。)

最後に「OK」ボタンをクリックすれば、準備完了です。
次に、VBAエディタの「挿入」タブから「標準モジュール」を開きましょう。

VBAでメールを送信するための基本的なコードは、以下の通りです。
「標準モジュール」にコピー&ペーストしてみてください。
Sub SendDeadlineAlert()
'Outlookオブジェクトの作成
Dim outlookApp As Object 'Outlook.Application
Set outlookApp = CreateObject("Outlook.Application") 'New Outlook.Application
'メール作成用オブジェクト
Dim mailItem As Object 'Outlook.MailItem
Set mailItem = outlookApp.CreateItem(0) 'olMailItem
'期限チェックと送信内容設定
With mailItem
.To = "recipient@example.com" '★宛先のメールアドレス
.Subject = "【期限アラート】タスクの締切が近づいています" '★メールの件名
.Body = "お疲れ様です。" & vbCrLf & _
"期限が近づいているタスクがあります。" & vbCrLf & _
"ご確認をお願いします。" '★メールの本文
.Display '.Send '★メールを画面に表示する場合は.Display、すぐに送信する場合は.Send
End With
'オブジェクトの解放
Set mailItem = Nothing
Set outlookApp = Nothing
End Sub
次に、より実用的な例を紹介します。
エクセルのシート上の期限情報を実際にチェックして、条件に合う場合にメールを送信するコードです。
たとえば、エクセルに以下のように入力してある場合を考えてみましょう。
- A列:タスク名
- B列:担当者のメールアドレスのプレフィックス(@より前の部分)
- C列:期限日
期限が3日以内に迫っているタスクについて通知するコードは、以下のようになります。
Sub CheckDeadlineAndSendAlert()
Dim lastRow As Long
Dim i As Long
Dim deadlineDate As Date
Dim today As Date
Dim ws As Worksheet
'対象のシートを指定
Set ws = ThisWorkbook.Sheets("Sheet1") '★実際のシート名に変更してください
today = Date '今日の日付を取得
lastRow = ws.Cells(Rows.Count, "A").End(xlUp).Row 'A列の最終行を取得 (タスク名がある列)
'2行目から最終行まで各行の期限をチェック (1行目はヘッダーと仮定)
For i = 2 To lastRow
'エラーを無視して次の行へ (日付でないデータなどに対応)
On Error Resume Next
deadlineDate = ws.Cells(i, "C").Value 'C列から期限日を取得 ★実際の期限日の列に変更
On Error GoTo 0
'期限日が正しく日付形式で、かつ空白でない場合のみ処理
If IsDate(ws.Cells(i, "C").Value) And Not IsEmpty(ws.Cells(i, "C").Value) Then
'3日以内の期限をチェック (今日以降かつ3日以内)
If deadlineDate - today <= 3 And deadlineDate >= today Then
'SendAlertEmailプロシージャを呼び出してメール送信
Call SendAlertEmail(ws.Cells(i, "A").Value, ws.Cells(i, "B").Value, deadlineDate)
End If
End If
Next i
MsgBox "期限アラートの確認が完了しました。", vbInformation
Set ws = Nothing
End Sub
複数の宛先に一斉送信する方法
1つの通知メールを複数の人に送りたいというケースにも対応可能です。
プロジェクトメンバー全員に同じ内容のリマインドを送りたいときでも、VBAで簡単に一斉送信できますよ。
Outlookで複数の宛先を指定する場合、メールアドレスを「;」(セミコロン)で区切って入力すればOK。
VBAでメールを作成する際も、「;」で区切って宛先文字列を作成すれば、複数人に同時にメールを送れます。
複数の宛先を To に設定して一斉送信する簡単なサンプルコードを見てみましょう。
Sub SendBulkAlerts()
Dim outlookApp As Object 'Outlook.Application
Dim mailItem As Object 'Outlook.MailItem
Dim recipients As String
Set outlookApp = CreateObject("Outlook.Application") 'New Outlook.Application
Set mailItem = outlookApp.CreateItem(0) 'olMailItem
'セミコロンで区切って複数の宛先を指定
recipients = "user1@company.com; user2@company.com; user3@company.com" '★実際の宛先に変更
With mailItem
.To = recipients
.Subject = "【一斉通知】期限が近づいているタスクについて" '★件名を適宜変更
.Body = "関係者各位" & vbCrLf & vbCrLf & _
"お疲れ様です。" & vbCrLf & _
"期限が近づいているタスクがありますので、ご確認をお願いいたします。" & vbCrLf & _
"詳細については、別途共有されているタスクリストをご参照ください。" '★本文を適宜変更
.Display '.Send '内容確認のためDisplayを推奨
End With
Set mailItem = Nothing
Set outlookApp = Nothing
MsgBox "一斉通知メールを作成しました。", vbInformation
End Sub
VBAを使用する際の注意点
まず重要なのは、Outlookが起動している状態であることです。
動作を安定させるため、事前にOutlookを起動しておくか、VBAコード内で起動確認処理を入れると確実ですよ。
セキュリティ警告が表示される場合がある点も覚えておきましょう。
マクロからOutlookを操作しようとすると、不正なプログラム対策で警告が出ることも…。
頻繁に警告が出る場合は、Outlookの設定見直しやデジタル署名の付与も検討しましょう。
VBAコード実行のためには、エクセルファイルのマクロ有効化も必要です。
ファイル開封時に「コンテンツの有効化」をクリックしてください。
メール送信処理を定期的に実行したい場合は、エクセルの機能だけでは完結しません。
Windowsのタスクスケジューラ等と組み合わせれば、指定日時に自動でマクロを実行する仕組みも構築できますよ。
Power Automateを使った自動メール送信の方法

Power Automateとは?
Power Automate(旧称 Microsoft Flow)は、Microsoftが提供しているクラウドベースの自動化プラットフォーム。
さまざまなアプリケーションやサービス間での日常的な繰り返し作業を、「フロー」として自動化できます。
Power Automateでのメール送信手順
まず、Power Automateのポータルサイトに、Microsoftアカウントでサインインします。
左側のメニューから「作成」を選び、「スケジュール済みクラウドフロー」を選択しましょう。
分かりやすいフロー名(「エクセル期限通知フロー」など)を入力し、開始日時と繰り返し頻度を設定します。
たとえば、「毎日」「午前9時」に実行するように設定することが可能ですよ。
「作成」ボタンをクリックすると、フローの編集画面が開きます。
フローの編集画面では、最初に設定した「繰り返し」トリガーが既に配置されています。
このトリガーの下にある「+ 新しいステップ」をクリックしましょう。
検索ボックスに「Excel Online (Business)」と入力し、「表内に存在する行を一覧表示」を選択しましょう。
どのエクセルファイルのどのテーブルからデータを取得するかを指定してください。
- 「場所」…OneDriveやSharePointサイトを選択
- 「ドキュメントライブラリ」…ドロップダウンから選択
- 「ファイル」(エクセルファイル名)…ドロップダウンから選択
- 「テーブル」(Excel内で設定したテーブル名)…ドロップダウンから選択
※ エクセルデータはあらかじめ「テーブルとして書式設定」しておく
エクセルのデータは、あらかじめ「テーブルとして書式設定」しておくのがおすすめです。
「タスク名」「担当者メールアドレス」「期限日」「ステータス(完了/未完了)」などの列を含めましょう。
また、期限日は、必ず日付形式で入力しておくことがポイント。
以上のような工夫をしておけば、Power Automateで非常に扱いやすくなりますよ。
エクセルからデータを取得できたら、次に期限が迫っているタスクだけを抽出するための条件を設定します。
「+ 新しいステップ」から、「コントロール」コネクタの中にある「条件」アクションを選択しましょう。
「条件」アクションでは、以下の2つの条件を満たす条件式を設定します。
- エクセルから取得した行の「期限日」が、特定の日数以内
- ステータスが「未完了」である
「5日以内に期限を迎え、かつステータスが『完了』ではない」タスクを抽出する場合を考えてみましょう。
Power Automateの式言語を使うと、以下のような式で表すことになります。
item()?[‘期限日’](Excelの期限日列の値)が addDays(utcNow(), 5)(現在の日時から5日後の日時)より小さい(less)、
かつ(and)、
item()?[‘ステータス’](Excelのステータス列の値)が 完了 と等しくない(not(equals(…)))
GUIで値を選択しながら式を組み立てられますし、詳細編集モードで直接式を入力することも可能です。
この条件分岐で、条件に合致するタスク(「はい」)に対してだけ、メール送信アクションが実行されますよ。
条件分岐の「はい」のブランチ(条件に合致した場合の処理)に、メールを送信するアクションを追加します。
まず、「アクションの追加」をクリックし、検索ボックスに「Outlook」と入力してください。
「Office 365 Outlook」コネクタの「メールの送信 (V2)」アクションを選択しましょう。
このアクションで、メールの宛先・件名・本文などを設定します。
- 「宛先」…エクセルから取得した「担当者メールアドレス」の動的コンテンツを選択
- 「件名」…固定の文言と、エクセルから取得した「タスク名」の動的コンテンツを組み合わせて設定
- 「本文」…固定の文言と、エクセルの情報を組み合わせた内容を作成(HTML形式も可)
たとえば、「お疲れ様です。『{{タスク名}}』の期限({{期限日}})が近づいています。」のように設定可能です。
以上のステップを設定し、フロー全体を保存しましょう。
指定したスケジュールで自動的にエクセルの期限をチェックし、該当タスクを担当者にメールで通知できます。
最後に、必ずテスト実行を行い、意図した通りに動作するか確認することも忘れないでくださいね。
Power Automateを使用する際の注意点
Power Automateをより快適に使うためには、知っておきたいポイントがいくつかあります。
無料プランの場合、月の実行回数が750回まで、1日のAPIリクエストが6,000回までといった制限に要注意。
業務で本格的に運用するなら、Microsoft 365ライセンスやPower Automate Premiumライセンスを取得しましょう。
エクセルファイルは、SharePoint OnlineかOneDriveに配置する必要があります。
ローカルPC上のファイルは直接扱えませんが、クラウドベースで安定した定期実行が可能なのが魅力ですよ。
また、エクセル側のデータは、必ずテーブル形式で管理してください。
エクセルで期限の通知メールを送信するメリット

次に、VBAとPower Automateで期限通知メールを設定する具体的なメリットについて確認していきましょう。
タスクの締め切りや見逃しを防止できる
エクセルで期限の通知メールを送る仕組みを構築すれば、設定した条件やタイミングで自動的にメール送信できます。
「うっかりタスクの存在を忘れていた!」「期限が過ぎてしまった!」といった人的ミスを大幅に削減できますよ。
多くのタスクを抱えている場合や、複数のメンバーが関わるプロジェクトの場合は、とくにおすすめ。
重要な締切を見落として大きな問題につながることを防ぎましょう。
ぜひ自動化された期限通知システムを導入することで、プロジェクト遅延のリスクを軽減してください。
他のツールを使わなくても完結できる
普段からエクセルでタスク管理している人にとっては、エクセルだけで完結できるのが大きな魅力。
VBAを利用する場合、基本的にエクセルとOutlookだけでシステムを構築できます。
新しい専用ツールを導入したり操作方法を覚えたりする手間やコストがかかりません。
Power Automateを利用する場合も、すでにMicrosoft 365を利用しているなら、追加のツールは導入不要です。
使い慣れたMicrosoftの環境内で完結できるのは、学習コストの面でもメリットが大きいですよ。
柔軟にカスタマイズできる
エクセルを使った期限通知システムは、非常に柔軟にカスタマイズ可能です。
たとえば、通知を送るタイミング(期限の何日前に通知するかなど)を自由に設定できます。
送信するメールの件名や本文の内容も、自社の運用ルールや伝えたいニュアンスに合わせられますよ。
設定が少し大変かもしれませんが、完全にカスタマイズできるのは、大きなメリットです。
「エクセルの期限通知メール」についてよくある質問

最後に、エクセルの期限通知メールに関してよく寄せられる質問と回答をまとめました。
エクセルでアラート通知を設定するには?
最も手軽なのは、条件付き書式 を使う方法です。
指定した条件に合致するセルの背景色や文字色を自動的に変更できます。
「期限日が7日以内になったらセルを黄色にする」「期限が過ぎたらセルを赤色にする」など設定可能ですよ。
具体的には、エクセルの「ホーム」タブにある「条件付き書式」から「新しいルール」を選びます。
数式を工夫することでさまざまな条件に対応できるので、いろいろと試してみましょう。
エクセルから自動でメール送信するにはどうしたらいいですか?
エクセルから自動でメールを送信するには、2つのアプローチがあります。
- エクセルのVBAとOutlookを連携させる方法
- Microsoft Power Automateを利用する方法
どちらの方法を選ぶかは、自身のスキルレベル・利用環境、実現したいことの複雑さ次第です。
もしプログラミングに抵抗がないならVBA、手軽に始めたいならPower Automateがいいかもしれません。
エクセルデータからメールを送るには?
VBAを利用する場合は、VBAのコード内でエクセルのセル値を直接取得します。
あらかじめ用意しておいたエクセルデータを、メールオブジェクトのプロパティに設定できますよ。
セルの値を文字列と連結して自由にメッセージを組み立てられるので、柔軟なカスタマイズ性が魅力です。
Power Automateの場合、「表内に存在する行を一覧表示」アクションでエクセルからデータを取得します。
次は、「メールの送信 (V2)」アクションなどのメール関連アクションです。
宛先や件名、本文の入力欄に「動的なコンテンツ」としてエクセルの各列の値を挿入していきます。
いずれの方法でも、まずエクセル上でデータを整理しておくことが重要ですよ。
タスク名・担当者メールアドレス・期限日・ステータスといった必要な列を明確に準備しましょう。
テーブル形式で管理しておくと、その後のメール送信処理がスムーズに進みます。
【まとめ】エクセルの期限通知メールを設定して見落しを防止しよう

エクセルでの期限通知メール設定法、VBAとPower Automateの活用術を解説してきました。
最大のメリットは、「うっかり忘れ」や見落としを防止できることです。
VBAとPower Automateのどちらを使うかは、自身や職場の状況に合わせて判断しましょう。
小さく始めつつ、改善を重ねて、よりしっかりと機能するシステムを構築し、業務効率化を実現してくださいね。
チームのタスク管理 / プロジェクト管理でこのようなお悩みはありませんか?

そうなりますよね。私も以前はそうでした。タスク管理ツールを導入しても面倒で使ってくれないし、結局意味なくなる。

じゃあどうしたらいいのか?そこで生まれたのがスーツアップです。

これ、エクセル管理みたいでしょ?そうなんです。手慣れた操作でチームのタスク管理ができるんです!

見た目がエクセルだからといって侮るなかれ。エクセルみたいに入力するだけで、こんなことも

こんなことも

こんなことまでできちゃうんです。

エクセル感覚でみんなでタスク管理。
まずは以下よりお試しいただき、どれだけ簡単か体験してみてください。