Excelからメールを一括送信できるようにフォームを修正する。

ExcelのVBAからメールを一括送信するには、いろんな方法があります。

今回は、テキストボックスを使った最も単純な方法を紹介します。

行番号のテキストボックスを2つ作り、「2~10」というように、メール送信する範囲を指定できる仕組みにします。

この方法なら、「2~2」と指定すれば、これまでのように1通ずつ送信することも可能です。

*もしこれまでの送信フォームを残しておきたい場合は、Excelのファイル「メール送受信.xls」ごとコピーしておいてください。

それではメールを一括送信できるように、ユーザーフォームを改良しましょう。

既に作成済みのフォーム「frm送信」に、テキストボックスとラベルを追加します。

【1】Excelのファイル「メール送受信.xls」を開きます。

*マクロを有効にする


【2】VBEを起動します。

*「Altキー」+「F11キー」


【3】フォーム「frm送信」を選択し、「オブジェクトの表示」ボタンをクリックします。

mail-192.gif


【4】フォーム「frm送信」のデザイン画面が表示されました。

mail-193.gif


【5】マウスで行番号のテキストボックス(txtPos)を選択し、キーボードの「Deleteキー」を押して削除します。

mail-194.gif


【6】ツールボックスを表示します。

mail-195.gif

ツールボックスは、メニューから、「表示」→「ツールボックス」で表示できます。

mail-17.gif


【7】新しいテキストボックス2つと、ラベル1つを以下のように作成します。

mail-196.gif

*「~」の部分がラベル


【8】新しく作成した左側のテキストボックスを、マウスで選択します。

mail-197.gif


【9】テキストボックスのプロパティで、オブジェクト名を設定します。

mail-198.gif

・オブジェクト名 txtStartPos

このテキストボックスが、「開始行番号」になります。


【10】同様に右側のテキストボックスのプロパティも変更します。

mail-199.gif

mail-200.gif

・オブジェクト名 txtEndPos

このテキストボックスが、「終了行番号」になります。


【11】ラベルのプロパティも変更します。

mail-201.gif

mail-202.gif

・オブジェクト名 変更しない
・Caption ~

このラベルは、表示に使うだけなので、オブジェクト名は何でもかまいません。


【12】ラベル「lblMailto」のオブジェクト名を変更します。

mail-203.gif

mail-204.gif

・オブジェクト名 lblMailto から lblMsg に変更

このラベルには、メールの送信先(氏名とメールアドレス)を表示していました。でも一括送信する場合は、複数の送信先があります。

こんな時は、一件一件送信先を表示するより、全体の進捗状況を表示するようにしたほうが、わかりやすいです。

そのためオブジェクト名が適切ではなくなるので、変更しました。


実は、もう一つ変更点があります。

テキストボックスを新しく作成したため、キーボードの「Tabキー」を押した時に、移動する順番が変わっています。

そこで、テキストボックスとコマンドボタンのプロパティで、「TabIndex」を指定し直します。

【13】txtStartPosのTabIndexを「0」にします。

mail-206.gif

以下同様に設定してください。
・txtStartPos 0
・txtEndPos 1
・txtSubject 2
・txtBody 3
・cmd送信 4


これでユーザーフォーム側の修正は、完了です。

メールを送信する範囲を選択できるようになったので、一括送信することが可能になります。

あとは、VBAプログラムを修正するだけです。

スポンサードリンク

スポンサードリンク






メール送信・受信プログラミング初心者入門 TOPへ