今回はエクセルからメールを送る方法を紹介します。
メールを単に送るのであれば、メールソフトやWEBメールを使えばよいんですが、
業務システムの中で、スケジューラ―やタイマーなどで自動実行するアプリケーションがあった場合、その処理が、実行された?・正常に終わった?・どのような結果だった?等、近くに居なくても、処理結果がある程度分かるような情報を携帯にメールで送られて来れば便利。
ということで、利用範囲は広くで、簡単に組み込めます。
かなり以前から利用されている「BASP21」という汎用コンポーネントを使用してみました。今回は、このコンポーネントの中でSMTP、POP3、FTP エンジンである BSMTP.DLLを使用します。(私は、あまり知りませんでした…)
今回は、Windows10(x64)での動作確認もかねて、単純にメールが送信できるか、試してみました。
環境設定 → 入力シート作成 → マクロ作成 の手順で作成してみます。
■■■ 環境設定 ■■■
私が使用しているPCは Windows10(x64) ですので
BSMTP.DLL を C:\Windows\sysWOW64 フォルダにコピーします。
32ビットOSのPCでは C:\Windows\system32 フォルダにコピーします。
BASP21は下記のサイトからダウンロードできます。
■■■ 入力シート作成 ■■■
メールの宛先・タイトル・内容等を入力するエクセルのシートを用意します。
上記の様なシートを準備しました。
「宛先」にはメール送信先のメールアドレス、「件名」にはメールのタイトル、「内容」にはメールの本文を入力できる様にしました。それぞれ入力が終了したら、「送信」ボタンをクリックすることで「宛先」にメールが送信される、ってかんじです。
あとは、「送信」ボタンと実際にメールを送信するマクロを関連付ければ終了です。
■■■ マクロ作成 ■■■
入力シートから、「宛先」、「件名」、「内容」のセルからデータを読み取りメールを送信するマクロを作成します。
Excelの「開発」タブから「コード」「マクロ」を選択してマクロウインドを開きます。
マクロ名に Excel_MailSend と入力し「作成」を選択します。
コード入力画面が表示されたら、以下のコードを入力します。
Option Explicit Private Declare Function SendMail Lib "bsmtp" _ (szServer As String, szTo As String, szFrom As String, szSubject As String, _ szBody As String, szFile As String) As String Sub Excel_MailSend() Dim i As Integer Dim sStatus As String Dim szServer As String ' SMTPサーバー名 Dim szFrom As String ' 送信元 Dim szTo As String ' 宛先 Dim szSubject As String ' 件名 Dim szBody As String ' 本文 Dim szFile As String ' 添付ファイル szServer = "excel-seed.com" ' ←メールサーバーによって異なります↓ szFrom = "[ 送信元メールアドレス ]" & vbTab & "[ メールユーザーID ]:[ パスワード ]" szTo = Range("C2").Text szSubject = Range("C4").Text szBody = Range("C6").Text szFile = "" sStatus = SendMail(szServer, szTo, szFrom, szSubject, szBody, szFile) If sStatus = "" Then i = MsgBox("メールの送信が完了しました。", vbInformation, "送信完了") Else i = MsgBox("メールの送信が異常終了しました。STAT=[" & sStatus & "]", vbCritical, "送信異常") End If End Sub
SMTPサーバー名(szServer)はご利用のサーバー名に置き換えてください。
メールサーバーによっては、SMTPサーバー名をサーバー名:ポートの形式で指定する場合もあります。
あとは、エクセルシートの「送信」ボタンとマクロ名を関連付ければOKです。
シート状の「送信」ボタンを右クリックして「マクロの登録」を選択。
マクロの登録ウインドウのマクロ名の中から Excel_MailSend を選択して、OKボタンをクリック。
これで、完成です。(保存するのを忘れずに!)
宛先・タイトル・内容を入力して「送信」ボタンを押してみましょう。
「送信完了」が表示されたらOK!
あ!もう一つ、送信先にこの内容が届いているはずですので、メールを確認してください。