VBA

【VBA】負荷テストに使える!同じ宛先にメールを連続送信する(Outlook)

ねぇもりさん、同じ宛先にメールを大量送信する方法ないかなぁ?
もり
もり
ええぇぇ?!何に使うの?
メールサーバの負荷テストをしたいんだ。

手動で1件ずつ送信しても、大した負荷にならないんだよ。自動でバババッって送れないかなぁ?

もり
もり
なるほどね!それならVBAでOutlookを操作すれば実現できるよ!

Outlookから、指定の宛先にメールを連続送信するマクロを紹介します。

ファイルの添付も可能なので、容量の大きいメールを送るテストにも使用できます。

(例)3秒間隔で連続10回メールを送信

Outlookでメールの連続送信をするマクロ

 

【事前準備】Excelシートにデータを入力する

Excelシートに入力したデータを利用してメールアイテムを作成します。下記のセル番地どおりに枠を用意しましょう。

  • 「添付ファイルパス」「添付ファイル名」は任意入力です。添付ファイルが不要な場合、セルへの入力は不要です。
  • 添付できるファイルは1つのみです。複数ファイルを添付したい場合、zipファイルにして、B6セルにzipファイル名を設定すればOKです。

指定の宛先に連続メール送信するマクロ

以下のコードを標準モジュールに貼り付けてmainプロシージャを実行してください。送信済メールは、Outlookの「送信済みアイテム」に入ります。

※マクロを実行する前にOutlookを起動しておきましょう。

 

ポイント:Sleep関数で処理を一時停止する

VBAの処理は非常に高速です。一時停止の処理を挟まないと、Outlookのメール作成&送信処理が追いつかず、Outlookがフリーズしてしまいます。

そのため、For~Nextステートメント内で、メール1件ごとに処理を一時停止しています。この記事では、3秒間隔に設定しています。お好みで秒数を設定してみてください。

Sleep関数とは

指定の時間、マクロ処理を停止する関数です。停止する時間をミリ秒単位で指定します。

【使い方】
Sleep 停止するミリ秒数
→3秒停止する場合、Sleep 3000 と記述します。

※Sleep関数は、VBAの関数ではなくWindows APIの関数です。

繰り返し処理のFor~Nextステートメント内でSleep関数を使用しています。このSleep関数は、モジュールの一番上に記述することで使用できます。

※くれぐれも注意してお使いください

※誤送信のないよう、細心の注意を払ってお使いください。また、くれぐれも、悪質な利用はしないようお願いいたします。

ブラックモリ
ブラックモリ
おっ、便利なツールだな。気になるあの娘にデートのお誘いメールを送っちゃうぞ~(ぐふふ)
メールの連続受信

【再掲】くれぐれも悪質な利用はしないようお願いいたします。

もり
もり
ちょ、やめて!
こんなメール届いたらドン引きだわ!(笑)

他にもVBAでOutlookを操作するマクロを紹介しています!

【VBAでOutlook操作】複数ファイルを添付できる!下書きメールを一括作成するマクロExcelシートのデータを元に、Outlookの下書きメールを一括作成するマクロです。キーワードに一致する複数ファイルをまとめて添付できるのがポイントです ...