
CDOメッセージオブジェクトを使用し、EXCEL2010 VBAよりメール送信を実現したいのですが..
下記コードの .Sendを実行後にエラーメッセージ「[6]オーバーフローしました」が表示されます。
試行錯誤しておりますが..自力では解決できないため、皆様よりご教授賜りたく何卒よろしくお願い
申し上げます。
---------------------------------------------------------------------------------------------------------
Public Sub SendMail()
Dim objCDOMsg As New CDO.Message '/* CDOメッセージオブジェクト */
'// Dim objCDOMsg As Object '/* CDOメッセージオブジェクト */
'// Set objCDOMsg = CreateObject("CDO.Message")
With objCDOMsg
' /* メールサーバ設定 */
With .Configuration.Fields
.Item(CdoConfiguration.cdoSendUsingMethod) = CdoSendUsing.cdoSendUsingPort '/* 外部SMTP指定 */
.Item(CdoConfiguration.cdoSMTPServer) = "111.222.333.44" '/* SMTPサーバ名 */
.Item(CdoConfiguration.cdoSMTPServerPort) = 25 '/* ポート№ */
.Item(CdoConfiguration.cdoSMTPConnectionTimeout) = 60 '/* タイムアウト */
.Item(cdoSMTPAuthenticate) = cdoAnonymous '/* SMTP認証なし */
.Item(CdoConfiguration.cdoLanguageCode) = CdoCharset.cdoShift_JIS '/* 文字セット */
.Update
End With
' /* メール編集 */
.To = "test@aaa-bbb.com" '/* 宛先 */
.CC = "test@aaa-bbb.com" '/* CC */
.From = "test@aaa-bbb.com" '/* 送信者 */
.Subject = "Test mail" '/* 件名 */
.TextBody = "メール本文" '/* メール本文 */
.AddAttachment "C:\Users\term\Desktop\TempFile.txt" '/* 添付ファイル */
' /* メール送信 */
.Send <------------------- このコードをステップ実行後にエラーメッセージ表示
End With
' /* オブジェクト変数解放 */
Set objCDOMsg = Nothing
End Sub
---------------------------------------------------------------------------------------------------------
[実行環境]
・Windows 7 Professional SP1
・EXCEL 2010 (Ver. 14.0.7165.5000)
・Outlook 2010(Ver. 14.0.7165.5000)
[補足]
・Outlook セキュリティセンターの設定
DEP有効、マクロ警告、プログラムアクセス警告
・Outlook アカウント種類
POP/SMTP
以上、宜しくお願いいたします。
No.1ベストアンサー
- 回答日時:
こんにちは。
正直な話、もうCDOを使ったのは古い昔の話なので、このエラーの要因というのは、コードそのものよりも、固有の設定に問題があるように思います。
自分で作ってみました。
ご質問のコードを元に、googleを使って自分自身用に作ってみました。
以下のコードで送られることは確認しましたが、ここ最近、Google は、メールの設定が異様に厳しくなりましたので、Google自体のメール・セキュリテイの設定を下げないとGoogleからは送信されませんが、コード自体は問題なさそうです。
>「転送においてサーバーに接続できませんでした」
このエラーメッセージは、Configuration のミスで発生しました。正しく直したら、通りました。
細かい問題は、相手のメールサーバーとの関係ですから、設定を細かく見ていくしかないと思います。
'//
Const myAddress As String ="********"
Const myPSW As String = "********"
Public Sub SendMail2()
Dim objCDOMsg As CDO.Message ' New CDO.Message '/* CDOメッセージオブジェクト */do.
Set objCDOMsg = New CDO.Message
'// Dim objCDOMsg As Object '/* CDOメッセージオブジェクト */
'// Set objCDOMsg = CreateObject("CDO.Message")
On Error GoTo ErrHandler
With objCDOMsg
' /* メールサーバ設定 */
With .Configuration.Fields
.Item(CdoConfiguration.cdoSendUserName) = myAddress '/*ユーザー名*/
.Item(CdoConfiguration.cdoSendPassword) = myPSW '/*パスワード*/
.Item(CdoConfiguration.cdoSendUsingMethod) = CdoSendUsing.cdoSendUsingPort '/* 外部SMTP指定 */
.Item(CdoConfiguration.cdoSMTPConnectionTimeout) = 100 '/* タイムアウト */
.Item(CdoConfiguration.cdoSMTPServer) = "smtp.gmail.com" ' /* SMTPサーバ名 */
.Item(CdoConfiguration.cdoSMTPServerPort) = 465 '/* ポート№ */
.Item(CdoConfiguration.cdoSMTPAuthenticate) = cdoBasic
.Item(CdoConfiguration.cdoSMTPUseSSL) = True
.Item(CdoConfiguration.cdoLanguageCode) = CdoCharset.cdoShift_JIS '/* 文字セット */
.Update
End With
' /* メール編集 */
.To = "xxxxxx@yyyyy.co.jp" '/* 宛先 */
.From = "******@gmail.com" '/* 送信者 */
.Subject = "Test mail" '/* 件名 */
.TextBody = "MainMessage" & vbNewLine & Date & " " & Time & vbNewLine & _
"This is TesMail" '/* メール本文 */
'.AddAttachment ThisWorkbook.Path & "\myTest.Txt" ' "C:\Users\term\Desktop\TempFile.txt" '/* 添付ファイル */
' /* メール送信 */
.Send '<------------------- このコードをステップ実行後にエラーメッセージ表示
End With
ErrHandler:
If Err.Number <> 0 Then
MsgBox Err.Number & " :" & Err.Description
'Debug.Print Err.Number & " :" & Err.Description
End If
' /* オブジェクト変数解放 */
Set objCDOMsg = Nothing
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VBSでメール送信
Visual Basic(VBA)
-
VBScriptで、メールの送信をしたい。
Visual Basic(VBA)
-
エクセルでCDOを使ったメール送信について
Visual Basic(VBA)
-
-
4
【エクセル】CDOでメール送信がエラーになる
Excel(エクセル)
-
5
VBAでメール送信(CDO)
その他(Microsoft Office)
-
6
VBA メール一斉送信で添付ファイルを送れるようにするとエラー
Visual Basic(VBA)
-
7
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
8
エラーを起こす方法
Oracle
-
9
CDO.Messageを使ったVBScript
その他(プログラミング・Web制作)
-
10
エクセルVBAでアウトルックメールの差出人変更
Excel(エクセル)
-
11
参照設定は2.8と6.0 6.1とどちらにチェッ
その他(Microsoft Office)
-
12
VBAでsmtp認証をするには?
Visual Basic(VBA)
-
13
実行時エラー3001「引数が間違った型、許容範囲外、または競合しています。」
Visual Basic(VBA)
-
14
VBAでパワーシェルを実行したいのですが、なかなかうまく出来ず、有識者の知識をお借りさせてください。
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「Columns("A:C")」の列文字を...
-
worksheetFunctionクラスのVloo...
-
Excelでフィルタをかけると警告...
-
実行時エラー 3265「要求された...
-
WordにOLEで埋め込んだExcelでW...
-
[C#]static void 関数内でthis
-
エクセルのVBAの標準モジュール...
-
エクセルVBAで配列内に空白デー...
-
エクセルVBAでcode128のバー...
-
[VBA]CDOメッセージ送信エラー
-
Word、VBAでの取り消し線文字の...
-
UserForm1.Showでエラーになり...
-
PowerPointVBAでスライドマスタ...
-
sheetsメソッドの失敗
-
Excel VBAでWordの複数ファイル...
-
上下の位置揃えについて
-
パワーポイント filedialogでフ...
-
【VB】【エクセル操作】 SaveAs...
-
オートメーションエラーについて
-
アクセスにてオブジェクト名変...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
テキストボックス中の文字列の...
-
エクセルのVBAの標準モジュール...
-
Excelでフィルタをかけると警告...
-
実行時エラー 3265「要求された...
-
上下の位置揃えについて
-
ExcelVBAでのNZ関数について
-
VBAで既に開いている別アプリケ...
-
VBAで Set wb = Sheets(1).Cop...
-
AccessVBAで「dim dbs as datab...
-
EXCEL VBA オートシェイプナン...
-
オブジェクト変数またはWITHブ...
-
[VBA]CDOメッセージ送信エラー
-
エクセルマクロエラー「'Cells'...
-
findメソッドの変数について
-
オブジェクトが見つかりません
-
ある文字列が全て数字であるか...
-
オブジェクト変数の取得について
-
CreateObjectとGetObjectの違い
おすすめ情報
上記モジュールを10回以上実行しておりますが・・
.Send コードの前(例えば「With objCDOMsg」,「.Item(・・」)
に実行エラーとなる場合もありました!!
これまでの情報は、With objCDOMsg にブレークポイントを設定し、
ステップ実行した場合の状況ですが、
ブレークポイントを解除後に実行した場合のエラーメッセージ表示
される関数は、当該 SendMail 関数です(イミディエイト確認)。
実行環境(win7/Outlook2010)の問題なのか?!
調査難航しております。
因みにSMTPサーバのIPアドレスをダミー値に変更した場合も.Send
コードまでは実行されます。
アドバイス・指摘事項等、宜しくお願いいたします。
申し訳ありません(訂正いたします)。
エラーメッセージ「[6]オーバーフローしました」は、SendMail 関数をコールしている箇所での
エラー内容でした。
SendMail関数のエラールーチンでは「転送においてサーバーに接続できませんでした」が 表示
されております。
Outlook側の送信サーバの設定は、
送信サーバー(SMTP)は認証が必要のチェックボックスOFF
送信サーバー(SMTP)ポート番号=25
※アカウント/パスワードは登録済(パスワードを保存するにチェック)
※ .Send コードの前に実行エラーとなることもあり、よくわかりません。
近日中に解決させる必要があり困っております。
以上、宜しくお願いいたします。