Excelはアラートを送信できますか?はい、できますが、いくつか制限があります。Excelは、Visual Basic(VBA)エディターでマクロを記述しない限り、アラートを自動でメールで送信することはできません。また、リマインダーアラートはExcelソフトウェアが開いている場合にのみ機能します。期待していたほど便利な方法ではないと思いませんか?
もう1つの方法は、複雑で(現時点では)XLSスプレッドシート形式のみに限られますが、スプレッドシートをOutlookカレンダーのように設定し、そこからデータをインポートする方法です。しかし、この方法も満足のいく結果にはなりません。そのため、Microsoftが実用的な解決策を提供するまでは、マクロを使用し、メールに少し手作業を加えるという回避策で我慢するしかありません。
これらのタスクを練習する際に使用できるサンプルのスプレッドシートを 2 つ作成しました。
マクロを含む完全なサンプルスプレッドシート:
ダウンロード
このスプレッドシートを使って、Excelアラートの作成とマクロの記述を練習しましょう。注:このスプレッドシートにはマクロが含まれています。JD Sartain
マクロ付きのスプレッドシートをダウンロードできない場合に備えて、マクロなしのサンプルスプレッドシートを用意しました。
ダウンロード
このスプレッドシートを使って、Excelアラートの作成とマクロの記述を練習しましょう。注:このスプレッドシートにはマクロは含まれていません。JD Sartain
スプレッドシートを作成し、数式を入力します
条件付き書式機能を使えば、締め切りが近づいた時や請求書の支払期日が近づいた時に通知するようにスプレッドシートを設定できます。また、請求書の支払期日をメールで通知することも可能です。
1. 上記の Excel Alerts スプレッドシート (マクロなし) をダウンロードするか、独自のスプレッドシートを作成または使用します。
2. セル A1 に関数=TODAY()を入力します。
3. スプレッドシートをゼロから作成する場合は、4行目にA列、B列、D列、E列に「請求書/債務」、「支払金額」、「支払期日」、「アラート基数番号」、「アラート序数番号」というフィールド名を入力します。C列には「支払期日」と入力し、Alt+Enterキーを押して2行目を追加し、「月」と入力します。アラート列EとFの積み重ねヘッダーについても同様の手順で行います。
4. C列とD列の両方を選択し、 「ホーム」>「結合して中央揃え」>「結合して中央揃え」(配置グループから)を選択します。残りのフィールド名をA列、B列、E列、F列の中央揃えにします。
5. フィールド/列ヘッダーに一致するデータをデータベース/スプレッドシートに入力します。
1年の各月ごとに別々のスプレッドシートを作成したくないので、Excel関数を使って、=TODAY()関数に日付を対応させることができます。この関数は、1年365日、毎日現在の日付をセルA1に入力します。しかし残念ながら、10日目(つまり月の10日目)は現在の日付と一致しません。例えば、2019年2月27日は = 27 または 27 thではありません。そこで、関数を使って日付を一致させます。
6.セルC5に関数「=DAY(1)」 、セルC6に「=DAY(2)」 、セルC7に「=DAY(3 )」と入力し、C34(30日)まで計算を進めます。(31日と入力することもできますが、ほとんどの請求書は31日が支払期日ではありません。なぜなら、その日は毎月あるわけではないからです。)
7. 次に、セル A2 に関数=DAY(A1)を入力します。
8. 序数 (1番目、2番目、3番目など)を使用する場合は、C5:C34 に基数 (1、2、3、4、5) を入力し、セル D5 に次の数式を追加します: =DAY(C5)&IF(OR(DAY(C5)={1,2,3,21,22,23,31}),CHOOSE(1*RIGHT(DAY(C5),1),”st”,”nd “,”rd “),”th”)。
9. D5 から D34 まで数式をコピーします (D5:D34)。
10. 同じ数式をセル B2 に追加します (数式を D5 から B2 にコピーするだけで、Excel によって数式が調整され、新しい場所が補正されます)。
DAY()関数は、=TODAY()の日付を、任意の月の30日のいずれかに対応する数値(例:1、2、3)に変換します。そのため、TODAY()関数がどの月を表示するかに関係なく、A2には日のみが表示されます。
11. 次に、列Eと列Fにアラート数式を設定します。セルE5に次の数式を入力します:=IF(C5=$A$2,”DUE NOW”, 0)ファンクションキーF4を使って$(ドル)記号を追加します。これにより、セルA2は絶対参照になります(つまり、この数式をコピーすると、列Cはコピーダウンするにつれて変化しますが、セルA2はそのままです)。
12. E5 の数式を E6 から E34 までコピーします。
13. 序数を使用する場合は、次の数式をセル F5 にコピーします: =IF(D5=$B$2,”DUE NOW”, 0)。次に、F5 の数式を F6 から F34 までコピーします。

スプレッドシートを作成してデータを入力し、数式を入力します。
ここで、今すぐ支払期限が迫っている請求書を識別するための条件付き書式ルールを作成できます。
条件付き書式を使用してExcelアラートを作成する
1. E5:E34 を強調表示し、[ホーム] > [条件付き書式] > [新しいルール]を選択します。
2. [新しい書式設定ルール]ダイアログ ボックスの [ルールの種類の選択]で、リストの 2 番目のオプション [ 指定の値を含むセルだけを書式設定する] を選択します。
3. [次のセルのみを書式設定]の[ルールの説明を編集]ボックスで、最初のフィールドのドロップダウン リストから[特定のテキスト]を選択し、2 番目のフィールドのドロップダウン リストから [次の値を含む] を選択して、 3 番目のフィールド ボックスに「DUE NOW」という単語をすべて大文字で入力します。
4. 次に、「プレビュー」ボックスの横にある「フォーマット」ボタンをクリックします。
5. 「セルの書式設定」ダイアログが開きます。「下線」フィールドボックスのドロップダウンリストから「なし」を選択します。
6. 「効果」の下で、どのボックスもチェックされておらず、黒く塗りつぶされていないことを確認します。
7. 「自動」フィールドボックスの横にある矢印をクリックし、パレットから色を選択します(例:赤)。フィールドボックスの名前が「自動」から「色」に変わります。
8. [自動/色]ボックスの上にある[フォント スタイル]ボックスで[太字]を選択し、 [OK]をクリックすれば完了です。
今日の日付(この場合は2月27日、行31)に対応するE列アラート基数番号を見てください。E31セルに「DUE NOW」という文字が太字で赤く表示されています。明日には、この「DUE NOW」という文字は行32に表示されます。これは明日の2月28日に対応します。
注:序数を使用する場合は、アラート序数列 (列 F)を使用する点を除き、上記の手順に正確に従ってください。つまり、範囲は F5:F34 になります。

条件付き書式を使用してアラートを作成する
うーん、請求書の支払いを最後の期日まで待てれば大丈夫なら、これは便利ですね。数日前に通知する数式を作成してみましょう。
スプレッドシートへの追加は非常に簡単です。セルA1に「=TODAY()」という数式を入力すると、Excelは今日の日付を返します。ファンクションキーF2を押してセルA1を編集し、数式の末尾に「+4」を追加します。つまり、「=TODAY()+4 」となります。
Excelは、2月27日+ 4 = 3月3日と認識しています。これは、月の日数ではなく日数のみを扱っているにもかかわらずです。そうでなければ、27 + 4 = 31になります。とても賢いプログラムですよね?これで、今すぐ支払わなければならない請求書の支払期限の4日前に通知が届くことになります。

支払期日の 4 日前通知用に 1 つの数式を変更します。
スプレッドシートを準備してメールで送信
先ほども述べたように、これは自動ではありません。マクロを書いてこれを行うこともできますが、マクロを実行するにはExcelを開く必要があります。
これらの手順を手動で実行するよりも少し速いマクロを使用する場合は、以下の手順に従ってください。
注:マクロを開始する前に、列Eの基数を使用するか列Fの序数を使用するかを決めてください。使用しない列は削除してください。キー入力は太字で、コメントは(括弧)で囲まれていることに注意してください。
マクロ記録をオンにする
1. 「開発」 タブをクリックし、「マクロの記録」ボタンをクリックします。
2. 「マクロ名」に「Alerts」と入力します。
3. 「ショートカットキー」に「Shift-M」と入力します。ExcelによってCtrlキーが追加されるため、実際のマクロのショートカットキーは「Ctrl+Shift-M」になります。
注:これは同時キーストロークです。つまり、Ctrl キーを押して押したまま、Shift キーを押したまま、文字 M を押し、3 つのキーを同時に放します。
4. [マクロの保存先] で、[このブック] (リストから) を選択します。
5. [説明]の下に次のテキストを入力します: 「今すぐ支払期限の請求書を見つけて、債権者と負債額をスプレッドシートの上部に移動します。」
6. [OK]をクリックします。
スプレッドシートを準備する
次のキーストロークの記録を開始します (慎重に)。
1. Ctrl+Homeキーを押す
2.右、右、右、右(列Eを削除する)
または…
3.右、右、右、右、右(列Fを削除する)
注意: E 列と F 列の両方を削除しないでください。どちらか一方だけを削除してください。
4. 「ホーム」タブをクリックします。
5. [削除] ( [セル]グループ内) をクリックします。
6.ドロップダウン リストから [シート列の削除] をクリックします。
7. Ctrl+Home
8. Ctrl + F (カーソルは自動的に[検索する文字列]フィールド ボックスに移動します。このボックスに検索語を入力します。)
9. 「DUE NOW」と入力します(すべて大文字)。
10. [オプション]ボタンをクリックします。
11. [検索先]フィールド ボックスをクリックし、リストから[値]を選択します。
12. 「次を検索」ボタンをクリックします。
13. [閉じる]ボタンをクリックします。
14. 左、左、左、左
15. Shiftキーを押しながら右キーを1 回押します。
16. Ctrl+C
17. Ctrl+Home、右(1回)。
18. Ctrl+V
19. [ホーム]タブをクリックし、[フォント]グループを選択します。
20. 「フォントの色」で「赤」をクリックし、「太字」をクリックします。
21. Ctrl+Home
これで、A1に今日の日付(プラス4)が表示され、B1に債権者、C1に未払い金額が表示されます。1画面に表示されるレコード/行が30件程度であれば、あまりメリットがないように思えますが、レコード/行が500件ある場合は、支払期限が迫っている請求書がスプレッドシートの1行目上部にポップアップ表示されるのは便利です。
注:リボンメニューに「メール」ボタンがない場合は、「ファイル」 > 「オプション」 > 「リボンのユーザー設定」をクリックし、「表示」タブに「メール」ボタンを追加してください。詳しくは、Wordのリボンメニューのカスタマイズに関する私の記事をご覧ください(ExcelでもWordと同じように機能します)。 上記の手順は、マクロの途中で止めないでください。まずボタンを追加してから、戻ってマクロを記録してください。
DUE NOWスプレッドシートにメッセージを添えてメールで送信
以下の手順は上記のマクロの一部ですが、Outlook の使用中はマクロが一時停止します。
22. 「表示」タブをクリックします。
23. 「メール」ボタンをクリックします。
Excel は Microsoft Outlook を開き、画面に新しい電子メールが表示されます。
24. カーソルは[宛先] フィールドにあります。ここに受信者のメール アドレスを入力します。
25. このメールのコピーを受信する必要がある人の追加のメールアドレスを「CC:」フィールドに入力します。
Alerts スプレッドシートがすでに添付されており、添付スプレッドシートの名前 (Alerts.xlsx) が件名に含まれていることに注意してください。
26. メール本文にカーソルを置き、次のように入力します。
電気料金:2500ドル、3月3日まで
注意:セルA1:C1をコピーしてOutlookに貼り付けるのはやめましょう。うまくいきません。Outlookに入るとマクロは一時停止します。Outlookでの操作はすべて毎回入力し直す必要があります。また、開いているメールを送信するかキャンセルするまで、Excelに戻ることはできません。
27. 「メールを送信」ボタンをクリックします。
Outlook が閉じて、ユーザーとカーソルが Excel に戻ります。
28. [開発]タブ > [マクロの停止]ボタンをクリックします。

マクロを記録し、スプレッドシートを電子メールで送信します。
マクロをテストする
1. Ctrl キーと Shift キーを押しながら M キーを押します。( Ctrlキーを押したまま、Shiftキーを押したまま、 Mキーを押し、3 つのキーを同時に放します。)
2. マクロは 1 秒で実行され、電子メール情報を入力できるように Outlook が開きます。
3. もう一度、[送信]をクリックすると、開いている Excel スプレッドシートに戻ります。
スプレッドシートをAlerts.xlsmなどのマクロ スプレッドシートとして保存し 、終了します。