中級者のためのExcel エクセルマクロVBA入門:メールを送信するその2(BASP21を使う)
BASP21は強力な送受信ツール
今回はメール送信のその2です。前回よりもこっちの方が簡単ですが、Excel2010とかあたりで動作未検証なので、ちょっと記事としてはあまりよろしくはないかもしれないのですが、一応ナレッジとしては共有しちゃおうかな?っていうのと、この記事を機に64bit版でも検証しちまうか?的なことも含めております。軍曹!
BASP21って?
BASP21は、メールの送受信や、HTTP・FTPなどの機能を提供してくれるDLLです。
VBなどのプログラミング言語だけでなく、もちろんVBAからも使用可能です。
これを使うことで、前回よりも多分簡単にメール送信とかが可能になります。なので上級ではなくて中級というわけです。では早速メール送信をしてみましょう。
BASP21のダウンロード
こちらから、BASP21をダウンロードするのですが・・・どこかわかりますか?正直私も( ゚д゚)?的なのところだったので、ちょっとだけ、詳細書いておきます。以下のページの枠で囲ったリンクからダウンロードします。
このページの赤い枠のリンクをそれぞれダウンロードします。ダウンロードしたら、「BASP21-2003-0211.exe」を[右クリック]→[管理者として実行]
後は次へ次へと普通にインストールすればOKです。次にBsmtp20070629-587.lzhを解凍すると、[Bsendm.exe]と[Bsmtp.dll]とう二つのファイルができます。アイコンがなんかいかがわしいですが、気にせずに(笑)後は、この2つのファイルをコピーして、インストールされているsystem32フォルダに上書きコピーします。
これで、インストールは完了です。
BASP21をエクセルVBAで使う。
エクセルVBAでBASP21を使うには、参照設定が必要になります。参照設定は、ファイルシステムオブジェクト(FSO)を使う時にも設定した思います。VBE上の[ツール]→[参照設定]から「BASP21 1.0 Type Library」にチェックを付けます。これでメールを送るための準備が整いました。
メール送信する
メールを送るためのSMTPの設定やポートがどうとか、メールヘッダがどうとかはとりあえず、置いといて、いきなりコード書いておきます。
Sub MailTest() ' 送信に必要な変数 Dim objMail As Variant Dim mailResult As String Dim server As String Dim mailTo As String Dim mailFrom As String Dim mailTitle As String Dim mailBody As String 'メール送信オブジェクトを作成 Set objMail = CreateObject("basp21") '送信に必要なパラメータの設定 server = "hoge.xxxxx.com" ''SMTPサーバー mailTo = "bar@example.com" ''宛先 mailFrom = "foo@example.com" ''差出し人 mailTitle = "タイトル" ''タイトル mailBody = "ここに本文を書きます" ''本文 ' メール送信を行う結果はmailResultに入る mailResult = objMail.SendMail(server, mailTo, mailFrom, mailTitle, mailBody, "") ' 送信後オブジェクト破棄 Set objMail = Nothing ' 送信エラーの場合にはメッセージを表示する If mailResult <> "" Then MsgBox mailResult End Sub
はい、こんな感じです。実際に送信するのはBASP21に入っているSendMailメソッドで行います。後は必要なパラメーターを用意してあげるだけです。非常に簡単ですね。
このメソッドに、たとえばメールアドレスとかを引数にしてあげれば、特定ではなく、指定したメールアドレスにメールを送ることも可能になるわけです。もちろん、ファイルを添付してメールを送ることだってできます。ちなみにファイルを添付してメールを送信する場合は・・・
Dim filePass As String filePass = "C:\test.txt|application/octet-strea" + vbtab + "C:\test2.txt|sample.txt" ' メール送信を行う結果はmailResultに入る mailResult = objMail.SendMail(server, mailTo, mailFrom, mailTitle, mailBody, filePass)
提供する時ってどうすれば?
これでメールを送ることは簡単にできるようになりますが、1つ問題があります。それはだれか別の人のPCにこのマクロを配布して使ってもらう場合ですね。この場合だと、配布先のPCにBASP21が入ってないと当然メールを送ることはできませんので、必ずマクロとBASP21のDLLファイルを一緒に配布する必要があります。
各DLLファイルのコピー先はSystem32と決まっているので、インストーラー作成ソフトなどでインストーラーを作り、それを使ってあげれば配布にはとても便利です。
いかがでしたでしょうか?以前紹介した上級向けのメール送信よりは楽に作れると思います。ちょっとDLLを別で配布しないといけないデメリットはありますが、こちらも十分使えると思います。
次はこのメール送信とクラウドサービスを組み合わせてエクセルからFAX送信をしてみます。
今日はここまで!
かしこ