今回は、テキストボックスを使った最も単純な方法を紹介します。
行番号のテキストボックスを2つ作り、「2~10」というように、メール送信する範囲を指定できる仕組みにします。
この方法なら、「2~2」と指定すれば、これまでのように1通ずつ送信することも可能です。
*もしこれまでの送信フォームを残しておきたい場合は、Excelのファイル「メール送受信.xls」ごとコピーしておいてください。
それではメールを一括送信できるように、ユーザーフォームを改良しましょう。
既に作成済みのフォーム「frm送信」に、テキストボックスとラベルを追加します。
【1】Excelのファイル「メール送受信.xls」を開きます。
*マクロを有効にする
【2】VBEを起動します。
*「Altキー」+「F11キー」
【3】フォーム「frm送信」を選択し、「オブジェクトの表示」ボタンをクリックします。
【4】フォーム「frm送信」のデザイン画面が表示されました。
【5】マウスで行番号のテキストボックス(txtPos)を選択し、キーボードの「Deleteキー」を押して削除します。
【6】ツールボックスを表示します。
ツールボックスは、メニューから、「表示」→「ツールボックス」で表示できます。
【7】新しいテキストボックス2つと、ラベル1つを以下のように作成します。
*「~」の部分がラベル
【8】新しく作成した左側のテキストボックスを、マウスで選択します。
【9】テキストボックスのプロパティで、オブジェクト名を設定します。
・オブジェクト名 txtStartPos
このテキストボックスが、「開始行番号」になります。
【10】同様に右側のテキストボックスのプロパティも変更します。
・オブジェクト名 txtEndPos
このテキストボックスが、「終了行番号」になります。
【11】ラベルのプロパティも変更します。
・オブジェクト名 変更しない
・Caption ~
このラベルは、表示に使うだけなので、オブジェクト名は何でもかまいません。
【12】ラベル「lblMailto」のオブジェクト名を変更します。
・オブジェクト名 lblMailto から lblMsg に変更
このラベルには、メールの送信先(氏名とメールアドレス)を表示していました。でも一括送信する場合は、複数の送信先があります。
こんな時は、一件一件送信先を表示するより、全体の進捗状況を表示するようにしたほうが、わかりやすいです。
そのためオブジェクト名が適切ではなくなるので、変更しました。
実は、もう一つ変更点があります。
テキストボックスを新しく作成したため、キーボードの「Tabキー」を押した時に、移動する順番が変わっています。
そこで、テキストボックスとコマンドボタンのプロパティで、「TabIndex」を指定し直します。
【13】txtStartPosのTabIndexを「0」にします。
以下同様に設定してください。
・txtStartPos 0
・txtEndPos 1
・txtSubject 2
・txtBody 3
・cmd送信 4
これでユーザーフォーム側の修正は、完了です。
メールを送信する範囲を選択できるようになったので、一括送信することが可能になります。
あとは、VBAプログラムを修正するだけです。