BASP21 には、メールに添付ファイルを付ける機能が、あらかじめ用意されているので、VBAプログラムの変更点は、少しだけです。
【1】Excelのファイル「メール送受信.xls」を開きます。
*マクロを有効にする
【2】VBEを起動します。
*「Altキー」+「F11キー」
【3】フォーム「frm送信」を選択し、「コードの表示」ボタンをクリックします。
【4】「cmd送信」クリック時のプログラムを、一部変更します。
赤枠で囲った部分を、追加したり、変更するだけです。
追加・変更部分のみ掲載
Dim files As String
'添付ファイル
files = Trim(Range("F" & i).Value)
'メール作成
msg = bobj.SendMail(mailq, mailto, mailfrom, tmpSubj, tmpBody, files)
【5】プログラムの変更が済んだら、VBEを「保存」してください。
これで添付ファイルを付ける準備は、完了です。
VBAプログラムの動作確認は、次回のステップで行ないます。
【解説】
今回は、プログラムが簡単なので、解説も一緒に行ないます。
(1)添付ファイルを指定する変数を、宣言している部分です。
Dim files As String
添付ファイルは、フルパスを文字列で指定するので、String型にしています。
(2)Excelのワークシートから、添付ファイルの値を取得している部分です。
files = Trim(Range("F" & i).Value)
* i はカウントアップします。
変数 files には、添付ファイルがある場合は、フルパスの文字列が代入されます。
もし無い場合は、空の文字列「""」が代入されます。
(3)メールを作成している部分を変更しました。
msg = bobj.SendMail(mailq, mailto, mailfrom, tmpSubj, tmpBody, "")
↓変更
msg = bobj.SendMail(mailq, mailto, mailfrom, tmpSubj, tmpBody, files)
最後の引数を、「""」から「files」に変更している点が、ポイントです。
実は、BASP21のSendMailメソッドは、最後の引数に添付ファイルを指定することが出来たのですが、これまでは利用していなかっただけです。
「""」を指定すると、添付ファイル無しで、メールが送信されていたわけです。
今回は便利なように、添付ファイルの有無を、ユーザーがワークシート上で指定できるように、プログラミングしました。