プログラム自体にバグ(誤り)がある可能性もあります。
そのためエラーが出た場合の対処が、プログラミングでは重要です。特にプログラマーとユーザーが異なる場合は、しっかりエラー処理する必要があります。
今回は、Excelからメール送信が上手くいった場合だけでなく、エラーが出るような条件でも、動作確認してみましょう。
(1)行番号が空白の時
もし行番号が適切で無い場合は、ラベルにメッセージが表示され、「メール送信」ボタンが、使用不可になります。
これらはメール送信時のエラーを、できるだけ防ぐための処理で、以下のエラー処理でも共通しています。
(2)行番号が1以下の時
(3)行番号に適切で無い値を入力した時
(1)、(2)、(3)は、終了行番号でも同じなので、同様に動作テストしてください。
以下からは、「メール送信」ボタンをクリックした時のエラー処理です。
(4)終了行番号が開始行番号より小さい時
(5)ワークシート「送信」で、行番号で選択した範囲の氏名やメールアドレスが入力されていない時
(6)メール送信時にエラーが発生した時
例 LANケーブルが抜けていた等
【解説】
実は今回紹介したのは、必要最低限のエラー処理です。もっといろんなケースが考えられます。
例 メールアドレスが妥当なものかどうか等
エラーで一番多いのは、予想外の操作やデータが入力された場合です。そのためパソコンに不慣れなユーザーが使う場合は、もっとしっかりしたエラー処理が必要です。
実際に行ないたいVBAプログラム本体より、エラー処理のほうが長くなることもあるほどです。
逆にプログラマー自身が使う場合は、どんな操作やデータを入力するとエラーになるのか、大体予測できるので、最低限のエラー処理で済ます場合もあります。
【補足】
メール一括送信時にエラーが発生すると、「Send」フォルダに未送信のメールが残ってしまいます。
・残ったメール
残ったメールは、次回送信するメールと一緒に送られます。
でも、もしかしたら同じ内容のメールを重複して送信してしまう可能性もあるため、手動で削除しておいたほうが無難です。
・残ったメールを削除
・「Send」フォルダは、空の状態が正しい
「Send」フォルダにいったん保存されたメール(テキストファイル)は、送信が正常に行なわれると、1件ずつ自動的に削除されます。
したがってプログラム終了後には、空の状態が正しいのです。
実は「Send」フォルダに残ったメールは、プログラムで自動的に再送信したり、まとめて削除することが可能です。その方法については、今後のステップで説明します。