[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『組み込みマクロの使用条件』(コヨーテひな)
「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.