SendOutlookMail_OnTime|Outlookメールを指定日時で予約送信 | Excel VBA
- yuji fukami
- 2024年12月28日
- 読了時間: 2分
更新日:1月4日

<概要 (Outlook 予約送信 VBA)>
SendOutlookMail_OnTime は、Excel VBA から Outlook メールを「指定した日時」に予約送信できる汎用プロシージャです(Outlook 予約送信 VBA)。
Outlook を使ったメール自動化では、単純な送信処理は比較的よく見かけますが、
「送信日時を VBA 側から制御する」という用途は、意外と実装例が少ないのが現状です。
本プロシージャを利用することで、以下のような処理を一括で実現できます。
・宛先/CC/BCC の柔軟な指定(複数指定対応)
・本文を一次元配列で管理し、可読性の高い本文生成
・複数添付ファイルの指定
・送信日時(DeferredDeliveryTime)の指定
・送信前確認 or 完全自動送信の切り替え
特に、業務でよくある
「営業時間外に送りたいメール」
「翌営業日の朝に自動で送信したい定型連絡」
といったケースで非常に有効です。
遅延バインディングを採用しているため、Outlook ライブラリ参照が不要で、
配布用マクロやアドインにもそのまま組み込める点も実務向きの設計となっています。
<実行例>
実行例におけるサンプルのコードは下記の通りです。
このコードを実行すると、 Outlookのメール送信画面が出てくるので、「配信タイミング」を確認すると確かに送信予約はされているのが確認できます。


なお、このコードの実行にあたって注意事項として、送信予約している時刻にアウトルックが起動していない場合は、メールの送信は行われません。なので、送信予約を行って安心しきってパソコンを閉じてしまった場合などはメールが送信できないので、この場合は注意が必要です。
ちなみに代わりの方法として、 GoogleAppsScriptを利用して。特定時刻にトリガーを設定するという方法でメールの送信予約という実装を行ったことがありますがこれはかなり高度な技術が利用するので、ここでは紹介は愛致します。
<関連記事>
今回紹介しているような汎用プロシージャを部品として一元管理する方法は別記事で紹介していますので、是非このノウハウも参考にしてみてください。
コーディングを効率化する上でどんどん増やしていった汎用プロシージャ(部品)をいくら増やしても簡単に流用ができるような仕組みの構築が可能になります。

