[[20130522132433]] 『組み込みマクロの使用条件』(コヨーテひな) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『組み込みマクロの使用条件』(コヨーテひな)

「SendMailByCDO」というマクロを使用してメール送信をしようとしています。
今起こっている事象は、社内への送信は可能、社外への送信は、単独ならOK、一括送信するとエラーにはなりませんが、メールは送られません。何か問題があるのでしょうか。

Excel2007,Windows 7

単独送信のマクロは以下になります。
Sub TEST()

    Dim MailSmtpServer As String        ' SMTPサーバ
    Dim MailFrom As String              ' 発信者
    Dim MailTo As String                ' 宛先
    Dim MailSubject As String           ' 件名
    Dim MailBody As String              ' 本文
    Dim strMSG As String                ' 結果メッセージ

    ' 送信確認
    If MsgBox("メールを送信します。", vbYesNo) <> vbYes Then Exit Sub

 ' 以下の値の設定は問題ありません。
    MailSmtpServer = Cells(1, 2).Text   ' SMTPサーバ
    MailFrom = Cells(2, 2).Text         ' 発信者
    MailTo = Cells(3, 2).Text           ' 宛先
    MailSubject = Cells(4, 2).Text      ' 件名
    MailBody = Cells(5, 2).Value        ' 本文

    '---------------------------------------------------------------------------
    strMSG = SendMailByCDO(MailSmtpServer, MailFrom, MailTo, "", "", _
        MailSubject, MailBody)
    '---------------------------------------------------------------------------
    ' 送信不成功の場合はエラーメッセージを表示
    If strMSG <> "OK" Then MsgBox Mid(strMSG, 3)
End Sub

一括送信のマクロは以下になります。
Sub TEST3()

    Dim MailSmtpServer As String        ' SMTPサーバ
    Dim MailFrom As String              ' 発信者
    Dim MailTo As String                ' 宛先
    Dim MailSubject As String           ' 件名
    Dim MailBody As String              ' 本文
    Dim strMSG As String                ' 結果メッセージ
    Dim strMSG2 As String               ' 結果メッセージのWORK
    Dim GYO As Long, GYOMAX As Long     ' 管理表の行

    ' 送信確認
    If MsgBox("メールを送信します。", vbYesNo) <> vbYes Then Exit Sub

    '---------------------------------------------------------------------------
    ' 宛先アドレスの列で最終行を判定
    GYOMAX = Range("B65536").End(xlUp).Row
    ' 処理先頭行
    GYO = 3
    ' 全体に渡って内容が固定となる項目を変数にセット
    MailSmtpServer = Cells(1, 4).Text   ' SMTPサーバ
    MailFrom = Cells(1, 2).Text         ' 発信者

    '---------------------------------------------------------------------------
    ' ■[全体の主処理] ※最終行まで繰り返す
    Do While GYO <= GYOMAX
        '-----------------------------------------------------------------------
        ' 分かりやすいようにセル値を一旦、変数にセット
        If Cells(GYO, 1).Text <> "" Then
            MailTo = Cells(GYO, 1).Text & _
                " <" & Cells(GYO, 2).Text & ">"     ' 宛先名+アドレス
        Else
            MailTo = Cells(GYO, 2).Text             ' 宛先アドレスのみ
        End If
        Application.StatusBar = MailTo & " 送信中....( " & GYO - 2 & _
            " / " & GYOMAX - 2 & " )"
        MailSubject = Cells(GYO, 3).Text            ' 件名
        MailBody = Cells(GYO, 4).Value              ' 本文
        '-----------------------------------------------------------------------
        ' 送信プロシージャの呼び出し(CC,BCCはブランク固定)
        ' ※ここで組み込みモジュール(modSendMailByCDOn.bas)が呼び出されます。
        strMSG2 = SendMailByCDO(MailSmtpServer, MailFrom, MailTo, "", "", _
            MailSubject, MailBody)
        '-----------------------------------------------------------------------
        ' 送信不成功の場合はエラーメッセージを集積
        If strMSG2 <> "OK" Then
            If strMSG <> "" Then strMSG = strMSG & vbCr
            strMSG = strMSG & strMSG2 & " (" & MailTo & ")"
        End If
        '-----------------------------------------------------------------------
        ' 次行をセット
        GYO = GYO + 1
    Loop

    '---------------------------------------------------------------------------
    ' ■[全体の後処理]
    Application.StatusBar = False
    ' 送信不成功の場合はエラーメッセージを表示
    If strMSG <> "" Then
        MsgBox strMSG, vbExclamation
    Else
        MsgBox "送信処理が完了しました。", vbInformation
    End If

End Sub


 パッと見、コード上におかしな点はなさそうですが、メールサーバで社内から社外への
 メール送信に制限はありませんか?

 スパムメールの発信対策などで、大量メールの送信が制限されている場合がありますので、
 心当たりがあれば確認してみてはどうでしょうか。
 (Mook)

Mookさん

ありがとうございます。
マクロはやはり問題ないように思います。いろいろ試していますが、やはり一括送信をするときに問題があるように思われます。内部で確認してみます。

(コヨーテひな)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.