[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『組み込みマクロの使用条件』(コヨーテひな)
「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)
ありがとうございます。
マクロはやはり問題ないように思います。いろいろ試していますが、やはり一括送信をするときに問題があるように思われます。内部で確認してみます。
(コヨーテひな)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.