
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
エクセルVBAでアウトルックメールの差出人変更
Excel(エクセル)
-
8
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
9
CDO.Messageを使ったVBScript
その他(プログラミング・Web制作)
-
10
エラーを起こす方法
Oracle
-
11
VBAでsmtp認証をするには?
Visual Basic(VBA)
-
12
実行時エラー3001「引数が間違った型、許容範囲外、または競合しています。」
Visual Basic(VBA)
-
13
Basp21のメール送信機能を win10(64bit) Excel2019で使用する方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでCOPYを繰り返すと、処理が...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】並び替えの範囲が、...
-
【ExcelVBA】5万行以上のデー...
-
vbsでのwebフォームへの入力制限?
-
vba textboxへの入力について教...
-
複数のExcelファイルをマージす...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
改行文字「vbCrLf」とは
-
Vba Array関数について教えてく...
-
【ExcelVBA】値を変更しながら...
-
【マクロ】開いているブックの...
-
【VBA】値を変更しながら連続で...
-
VBAの「To」という語句について
-
算術演算子「¥」の意味について
-
以下のプログラムの実行結果は...
-
VB.net 文字列から日付型へ変更...
-
[Excel VBA]特定の条件で文字を...
-
VBA ユーザーフォーム ボタンク...
-
ワードの図形にマクロを登録で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでCOPYを繰り返すと、処理が...
-
複数のExcelファイルをマージす...
-
【ExcelVBA】5万行以上のデー...
-
vbsでのwebフォームへの入力制限?
-
vba textboxへの入力について教...
-
Vba セルの4辺について罫線が有...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】並び替えの範囲が、...
-
Vba Array関数について教えてく...
-
【ExcelVBA】値を変更しながら...
-
【マクロ】開いているブックの...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
エクセルのマクロについて教え...
-
エクセルの改行について
-
VBA 入力箇所指定方法
-
[VB.net] ボタン(Flat)のEnable...
-
VBAでセルの書式を変えずに文字...
-
vb.net(vs2022)のtextboxのデザ...
-
Excelのマクロについて教えてく...
-
改行文字「vbCrLf」とは
おすすめ情報
上記モジュールを10回以上実行しておりますが・・
.Send コードの前(例えば「With objCDOMsg」,「.Item(・・」)
に実行エラーとなる場合もありました!!
これまでの情報は、With objCDOMsg にブレークポイントを設定し、
ステップ実行した場合の状況ですが、
ブレークポイントを解除後に実行した場合のエラーメッセージ表示
される関数は、当該 SendMail 関数です(イミディエイト確認)。
実行環境(win7/Outlook2010)の問題なのか?!
調査難航しております。
因みにSMTPサーバのIPアドレスをダミー値に変更した場合も.Send
コードまでは実行されます。
アドバイス・指摘事項等、宜しくお願いいたします。
申し訳ありません(訂正いたします)。
エラーメッセージ「[6]オーバーフローしました」は、SendMail 関数をコールしている箇所での
エラー内容でした。
SendMail関数のエラールーチンでは「転送においてサーバーに接続できませんでした」が 表示
されております。
Outlook側の送信サーバの設定は、
送信サーバー(SMTP)は認証が必要のチェックボックスOFF
送信サーバー(SMTP)ポート番号=25
※アカウント/パスワードは登録済(パスワードを保存するにチェック)
※ .Send コードの前に実行エラーとなることもあり、よくわかりません。
近日中に解決させる必要があり困っております。
以上、宜しくお願いいたします。