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で質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) VBA メール送信済で実行されるはずが、実行されない時があります。 2 2023/02/02 14:05
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- Visual Basic(VBA) outlook マクロが終了しません。 1 2022/09/02 11:14
- Visual Basic(VBA) エクセルのマクロとシートの保護について教えてください。 1 2022/10/18 08:36
- Visual Basic(VBA) Excel・ユーザーフォームの情報を受け渡したい 4 2022/06/08 10:11
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) Excel VBA メール作成について 本文の中にExcel でコピーした図を上下に2つ 貼り付けを 2 2023/06/14 01:48
このQ&Aを見た人はこんなQ&Aも見ています
-
見学に行くとしたら【天国】と【地獄】どっち?
みなさんは、一度だけ見学に行けるとしたら【天国】と【地獄】どちらに行きたいですか? 理由も聞きたいです。
-
【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
【お題】・忍者がやってるYouTubeが炎上してしまった理由
-
自分独自の健康法はある?
こうしていると調子がいい!みたいな自分独自の健康法、こだわりはありますか?
-
この人頭いいなと思ったエピソード
一緒にいたときに「この人頭いいな」と思ったエピソードを教えてください
-
「これいらなくない?」という慣習、教えてください
現代になって省略されてきたとはいえ、必要性のない慣習や風習、ありませんか?
-
VBSでメール送信
Visual Basic(VBA)
-
VBScriptで、メールの送信をしたい。
Visual Basic(VBA)
-
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
-
-
4
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
5
アクセスVBAでメールを送信(複数宛先・添付)
その他(パソコン・スマホ・電化製品)
-
6
Basp21のメール送信機能を win10(64bit) Excel2019で使用する方法
Excel(エクセル)
-
7
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
8
押したボタンの位置取得(共通のマクロ)
Excel(エクセル)
-
9
参照設定は2.8と6.0 6.1とどちらにチェッ
その他(Microsoft Office)
-
10
VBA メール一斉送信で添付ファイルを送れるようにするとエラー
Visual Basic(VBA)
-
11
Basp21を使用してメール送信ができない
Visual Basic(VBA)
-
12
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
13
【Excel VBA】指定行以降をクリアするには?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【選手権お題その3】この画像で一言【大喜利】
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・ちょっと先の未来クイズ第6問
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「Columns("A:C")」の列文字を...
-
Excelでフィルタをかけると警告...
-
上下の位置揃えについて
-
worksheetFunctionクラスのVloo...
-
ある文字列が全て数字であるか...
-
VBScriptでのExcelブックのプロ...
-
エクセルVBAでcode128のバー...
-
ドロップダウンリストの行を増...
-
VBAで既に開いている別アプリケ...
-
エクセルマクロエラー「'Cells'...
-
エクセルのVBAの標準モジュール...
-
VBAで Set wb = Sheets(1).Cop...
-
VB6またはVB2005でWordの操作
-
テキストボックス中の文字列の...
-
エクセルVBA 他ブックのシート...
-
Shell.ApplicationのNameSpace...
-
オブジェクト変数またはWITHブ...
-
VBAについてです。 初心者です...
-
エクセルのVBAでWEBページの更新
-
VBAでWebページにセルの値を入力
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
エクセルのVBAの標準モジュール...
-
実行時エラー 3265「要求された...
-
Excelでフィルタをかけると警告...
-
VBAで既に開いている別アプリケ...
-
エクセルマクロエラー「'Cells'...
-
ExcelVBAでのNZ関数について
-
テキストボックス中の文字列の...
-
EXCEL VBA オートシェイプナン...
-
AccessVBAで「dim dbs as datab...
-
VBScriptでファイルの日時順(降...
-
上下の位置揃えについて
-
ある文字列が全て数字であるか...
-
VBAで Set wb = Sheets(1).Cop...
-
[VBA]CDOメッセージ送信エラー
-
オブジェクトが見つかりません
-
findメソッドの変数について
-
PowerPointVBAでスライドマスタ...
-
VBAからPDFファイルにパスワー...
おすすめ情報
上記モジュールを10回以上実行しておりますが・・
.Send コードの前(例えば「With objCDOMsg」,「.Item(・・」)
に実行エラーとなる場合もありました!!
これまでの情報は、With objCDOMsg にブレークポイントを設定し、
ステップ実行した場合の状況ですが、
ブレークポイントを解除後に実行した場合のエラーメッセージ表示
される関数は、当該 SendMail 関数です(イミディエイト確認)。
実行環境(win7/Outlook2010)の問題なのか?!
調査難航しております。
因みにSMTPサーバのIPアドレスをダミー値に変更した場合も.Send
コードまでは実行されます。
アドバイス・指摘事項等、宜しくお願いいたします。
申し訳ありません(訂正いたします)。
エラーメッセージ「[6]オーバーフローしました」は、SendMail 関数をコールしている箇所での
エラー内容でした。
SendMail関数のエラールーチンでは「転送においてサーバーに接続できませんでした」が 表示
されております。
Outlook側の送信サーバの設定は、
送信サーバー(SMTP)は認証が必要のチェックボックスOFF
送信サーバー(SMTP)ポート番号=25
※アカウント/パスワードは登録済(パスワードを保存するにチェック)
※ .Send コードの前に実行エラーとなることもあり、よくわかりません。
近日中に解決させる必要があり困っております。
以上、宜しくお願いいたします。