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も見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
VBSでメール送信
Visual Basic(VBA)
-
Basp21のメール送信機能を win10(64bit) Excel2019で使用する方法
Excel(エクセル)
-
VBScriptで、メールの送信をしたい。
Visual Basic(VBA)
-
-
4
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
5
アクセスVBAでメールを送信(複数宛先・添付)
その他(パソコン・スマホ・電化製品)
-
6
VBAでActiveDirectoryのユーザ一覧の取得の仕方
Visual Basic(VBA)
-
7
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
8
Accessのレポート上のテキストボックス値を設定したい
その他(データベース)
-
9
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
10
【エクセル】CDOでメール送信がエラーになる
Excel(エクセル)
-
11
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
12
CSVの定義
その他(パソコン・スマホ・電化製品)
-
13
Excelの入力規則で2列表示したい
Excel(エクセル)
-
14
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
15
エクセルVBAでTargetのセルに設定された「名前の定義」の取得方法は?
Excel(エクセル)
-
16
ACCESSから、メール送信を行いたいです
Access(アクセス)
-
17
VBA エクセル メール送信 ハイパーリンクの貼り方
その他(Microsoft Office)
-
18
ExcelのVBA。public変数の値が消える
Visual Basic(VBA)
-
19
SVFの設定について:クラスパスが通ってない?
Java
-
20
ACCESSにて
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
[VBA]CDOメッセージ送信エラー
-
エクセルのVBAの標準モジュール...
-
PowerPointVBAでスライドマスタ...
-
ACCESS activeXコンポーネント...
-
VBAからPDFファイルにパスワー...
-
Excelでフィルタをかけると警告...
-
実行時エラー 3265「要求された...
-
VBで引数にDictionaryオブジェ...
-
Excel VBAでシートのコピー、移...
-
ExcelVBAでのNZ関数について
-
VBA (Row とRowsの違いについて)
-
VBAについてです。 初心者です...
-
テキストボックス中の文字列の...
-
Accessフォームから指定のExcel...
-
DelphiのTListについて
-
findメソッドの変数について
-
EXCEL VBAで標準モジュール内...
-
vbsのFolderExistsで部分一致を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
エクセルのVBAの標準モジュール...
-
実行時エラー 3265「要求された...
-
VBAで既に開いている別アプリケ...
-
PowerPointVBAでスライドマスタ...
-
VBAで Set wb = Sheets(1).Cop...
-
エクセルマクロエラー「'Cells'...
-
ある文字列が全て数字であるか...
-
VBAについてです。 初心者です...
-
VBScriptでファイルの日時順(降...
-
Excelでフィルタをかけると警告...
-
VBAからPDFファイルにパスワー...
-
VBで引数にDictionaryオブジェ...
-
このように書くべきですか? { ...
-
EXCEL VBA オートシェイプナン...
-
テキストボックス中の文字列の...
-
エクセルVBAでcode128のバー...
-
[VBA]CDOメッセージ送信エラー
-
オブジェクトが見つかりません
おすすめ情報
上記モジュールを10回以上実行しておりますが・・
.Send コードの前(例えば「With objCDOMsg」,「.Item(・・」)
に実行エラーとなる場合もありました!!
これまでの情報は、With objCDOMsg にブレークポイントを設定し、
ステップ実行した場合の状況ですが、
ブレークポイントを解除後に実行した場合のエラーメッセージ表示
される関数は、当該 SendMail 関数です(イミディエイト確認)。
実行環境(win7/Outlook2010)の問題なのか?!
調査難航しております。
因みにSMTPサーバのIPアドレスをダミー値に変更した場合も.Send
コードまでは実行されます。
アドバイス・指摘事項等、宜しくお願いいたします。
申し訳ありません(訂正いたします)。
エラーメッセージ「[6]オーバーフローしました」は、SendMail 関数をコールしている箇所での
エラー内容でした。
SendMail関数のエラールーチンでは「転送においてサーバーに接続できませんでした」が 表示
されております。
Outlook側の送信サーバの設定は、
送信サーバー(SMTP)は認証が必要のチェックボックスOFF
送信サーバー(SMTP)ポート番号=25
※アカウント/パスワードは登録済(パスワードを保存するにチェック)
※ .Send コードの前に実行エラーとなることもあり、よくわかりません。
近日中に解決させる必要があり困っております。
以上、宜しくお願いいたします。