スポンサードリンク

Excel メール送信時のプログラム変更点についての解説。

前回、メール送信のVBAプログラムを変更しましたが、その詳細について解説します。

(1)変数を宣言セクションに移動した理由
宣言セクションで宣言した変数は、フォーム「frm送信」のモジュール全体の各プロシージャから、共通して利用できます。

メール送信に関するSMTPサーバーの設定を、フォームの初期化時に、ワークシートから取得し、変数に代入しておいて、後でコマンドボタンをクリックした時に利用するためです。


(2)宣言セクションに追加した変数
Dim mSender As String

この変数は、ワークシート「設定」から、送信者を取得し、値を代入しておくためのものです。


(3)他のワークシートの値を参照するには?
現在プログラムが動作しているワークシートなら、次のように簡単に取得できます。

同じワークシートの「B列1行目」のセル
Range("B1").Value

でも別のワークシートの値を参照するには、次のように書きます。

ワークシート「設定」の「B列1行目」のセル
Sheets("設定").Range("B1").Value

こうして得た値を、念のため Trim という関数で、前後の空白を除去してから、変数に代入しています。

'送信者
mSender = Trim(Sheets("設定").Range("B1").Value)

他の値の場合も同様です。

これでワークシート「設定」から、メール送信に必要な値を取得できます。

今回のポイントは、プログラムが動作しているワークシートと、それ以外のワークシートでは、参照の仕方が少し違うということです。


(4)フォーム「frm送信」の行番号で選択したメールアドレスは、変数 eMail に入っています。それを変数 mailto に代入している部分です。

mailto = eMail

BASP21の引数と同じにするため、わざわざ mailto に代入していますが、eMailをそのまま使うこともできます。


msg = bobj.SendMail(svname, mailto, mailfrom, subj, body, "")

msg = bobj.SendMail(svname, eMail, mailfrom, subj, body, "")

上記の2つは、同じ結果になります。


(5)送信者の情報を組み立て、変数に代入している部分です。
mailfrom = mSender & vbTab & id & ":" & pass

変数 mSender、id、pass には、ワークシート「設定」から取得した値が代入されています。それをプログラムで組み立てて、変数に代入しています。

変更前より、プログラムがシンプルになっていますね。


(6)フォーム上のテキストボックスから、件名を取得し、変数に代入している部分です。
subj = Me.txtSubject


(7)同じく、本文を取得し、変数に代入している部分です。
body = Me.txtBody


これでメール送信のVBAプログラム中で使う値は、全てワークシートかフォーム上から取得できるようになりました。

メールを送信する度に、直接プログラムを編集する必要が無くなりました。

スポンサードリンク






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