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番好きなおでんの具材を教えてください。
-
一回も披露したことのない豆知識
あなたの「一回も披露したことのない豆知識」を教えてください。 「そうなんだね」と「確かに披露する場所ないね」で評価します。
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
いけず言葉しりとり
はんなりと心にダメージを与える「いけず言葉」でしりとりをしましょう。 「あ」あら〜しゃれた服着てはりますな 遠くからでもわかりましたわ
-
お風呂の温度、何℃にしてますか?
みなさん、家のお風呂って何℃で入ってますか? ぬるめのお湯にゆったり…という方もいれば、熱いのが好き!という方もいるかと思います。 我が家は平均的(?)な42℃設定なのですが、みなさんのご家庭では何℃に設定していますか?
-
VBSでメール送信
Visual Basic(VBA)
-
Basp21のメール送信機能を win10(64bit) Excel2019で使用する方法
Excel(エクセル)
-
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
-
4
VBScriptで、メールの送信をしたい。
Visual Basic(VBA)
-
5
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
6
VBAで先月、先々月を求める方法
Visual Basic(VBA)
-
7
【ACCESS】フォーム名/コントロール名を文字列型変数で指定するには
Access(アクセス)
-
8
押したボタンの位置取得(共通のマクロ)
Excel(エクセル)
-
9
VBA プロシージャの名前の取得
その他(Microsoft Office)
-
10
TextBoxコントロールを引数として渡すには?
その他(教育・科学・学問)
-
11
Accessの更新後処理で特定の条件を満たしている場合、フォーカスを移動させない方法
PowerPoint(パワーポイント)
-
12
アクセスVBAでメールを送信(複数宛先・添付)
その他(パソコン・スマホ・電化製品)
-
13
Basp21を使用してメール送信ができない
Visual Basic(VBA)
-
14
Access VBAでメール自動送信
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
VBAで既に開いている別アプリケ...
-
「Columns("A:C")」の列文字を...
-
実行時エラー 3265「要求された...
-
エクセルのVBAの標準モジュール...
-
VBAからPDFファイルにパスワー...
-
AccessVBAで「dim dbs as datab...
-
Excelでフィルタをかけると警告...
-
VBAで Set wb = Sheets(1).Cop...
-
VBScriptでファイルの日時順(降...
-
オブジェクト変数の取得について
-
Excel VBAでWordの複数ファイル...
-
エクセルVBAで配列内に空白デー...
-
エクセルVBAでcode128のバー...
-
UserForm1.Showでエラーになり...
-
VBA msoShapeBlockArcで扇形の...
-
エクセルVBAでFor each文
-
textBox isNot Nothing とは
-
VBで引数にDictionaryオブジェ...
-
VBからテキストファイル(タブ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
Excelでフィルタをかけると警告...
-
エクセルのVBAの標準モジュール...
-
実行時エラー 3265「要求された...
-
VBAで既に開いている別アプリケ...
-
VBAからPDFファイルにパスワー...
-
PowerPointVBAでスライドマスタ...
-
EXCEL VBA オートシェイプナン...
-
オブジェクトが見つかりません
-
テキストボックス中の文字列の...
-
VBAで Set wb = Sheets(1).Cop...
-
エクセルマクロエラー「'Cells'...
-
ExcelVBAでのNZ関数について
-
上下の位置揃えについて
-
UserForm1.Showでエラーになり...
-
AccessVBAで「dim dbs as datab...
-
findメソッドの変数について
-
VBScriptでファイルの日時順(降...
-
Excel VBAでWordの複数ファイル...
おすすめ情報
上記モジュールを10回以上実行しておりますが・・
.Send コードの前(例えば「With objCDOMsg」,「.Item(・・」)
に実行エラーとなる場合もありました!!
これまでの情報は、With objCDOMsg にブレークポイントを設定し、
ステップ実行した場合の状況ですが、
ブレークポイントを解除後に実行した場合のエラーメッセージ表示
される関数は、当該 SendMail 関数です(イミディエイト確認)。
実行環境(win7/Outlook2010)の問題なのか?!
調査難航しております。
因みにSMTPサーバのIPアドレスをダミー値に変更した場合も.Send
コードまでは実行されます。
アドバイス・指摘事項等、宜しくお願いいたします。
申し訳ありません(訂正いたします)。
エラーメッセージ「[6]オーバーフローしました」は、SendMail 関数をコールしている箇所での
エラー内容でした。
SendMail関数のエラールーチンでは「転送においてサーバーに接続できませんでした」が 表示
されております。
Outlook側の送信サーバの設定は、
送信サーバー(SMTP)は認証が必要のチェックボックスOFF
送信サーバー(SMTP)ポート番号=25
※アカウント/パスワードは登録済(パスワードを保存するにチェック)
※ .Send コードの前に実行エラーとなることもあり、よくわかりません。
近日中に解決させる必要があり困っております。
以上、宜しくお願いいたします。