Excel VBAでメールをすぐに送信する|ボタンで送信するシート

シートに配置したボタンをクリックすると、すぐにメール送信するVBAの作成


Homeに戻る > Excel 数値・文字列・検索・印刷のTipsへ

ExcelでSendMail関数を使用し、メールを送信するVBAを掲載しました。

Excelでメール送信するVBAの作成|SMTPサーバー・添付ファイル」を参照してください。

SendMail関数の場合、Excelは送信終了まで待ちますが、ここで使用するSendMailEx関数の場合、Bsendm.exeが実行するのですぐに送ります。

今回、Excel VBAでメール送信するにはTatsuo Babaさん作成のBsendm.exeを使用させていただきました。

Bsendm.exeの著作権はTatsuo Babaさんが所有されています。

Bsendm.exeはここよりダウンロードできます。

ダウンロード後、システムフォルダ(windows\system32)においてください。

実行結果はログファイルに保存されます。





すぐにメールを送信するVBA

Excel VBA コード

Option Explicit

Private Declare Function SendMailEx Lib "bsmtp" _
      (szLogfile As String, szServer As String, szTo As String, szFrom As String,_
       szSubject As String, szBody As String, szFile As String) As String

Private Sub ExSendMail()
    Dim sret As String
    Dim szLogfile 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    '添付ファイル
    
    szLogfile = "c:\mail_test\log.txt"
    szServer = Range("G13")
    szFrom = Range("G14")
    szTo = Range("G17")
    szSubject = Range("G4")
    szBody = Range("G5")
    szFile = ""
    
    sret = SendMailEx(szLogfile, szServer, szTo, szFrom, szSubject, szBody, szFile)

    ' 送信エラーの場合
    If Len(sret) <> 0 Then
        MsgBox "送信エラー: " & sret
    End If
End Sub

Private Sub CommandButton1_Click()
    ExSendMail
End Sub

Excelシート画面

件名、本文、SMTPサーバー名、送信元アドレス、送信先アドレスを入力します。

送信ボタンをクリックすると、シートに入力した内容で送信します。

※.メールサーバーが「Outbound Port25 Blocking」に対応している場合、送信できない場合があります。

この場合、SMTPサーバー名:587 のようにSMTPの後ろに「:587」を付けると送信できる場合があります。

メールサーバーが対応していないとできません。

「Outbound Port25 Blocking」とは25番ポートブロックといわれています。

ウイルスメールや迷惑メール、フィッシングメールなどの防止の為、近年、採用されるプロバイダーが多くなっています。

メールを送信するシート
Homeに戻る > Excel 数値・文字列・検索・印刷のTipsへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved