• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Outlook2013自動送信が出来ません。)

Outlook2013自動送信ができない理由と修正方法

このQ&Aのポイント
  • Outlook2013で自動送信するVBAマクロを作成しようとすると、コンパイルエラーが発生してうまく動作しない場合があります。
  • コンパイルエラーが発生する原因としては、使用するオブジェクトが正しく宣言されていないことや、必要なライブラリが参照されていないことが考えられます。
  • 修正するためには、オブジェクトの宣言やライブラリの参照を正しく行う必要があります。具体的な修正方法については、ソースコードの該当部分を確認して修正してください。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

勿論、モジュール(このコード)の最後にEndSub がない、なんて論外。 ーー 下記の通りに、特定の行を、一旦コメント化して、「エクセルVBA」(標準モジュールに置く)で実行したら、メイル送信の一歩手前までは、うまく行ったようだ。 それと、 'Outlook.Application のところ数か所は、「質問にあげているコードの元の通りの ままで動く」ようにするには、「参照設定」ということが必要なのだと思う。 Googleで「Outlook 参照設定」で調べてみてください。 徐々に一行ずつ、コメント化をはづし、As Objectは元(質問文の通りということ)に戻してテストしてください。 添付ファイルのところは、しばらくはコメント化しておいて、最後にそれだけをコメント化をはずして、添付ファイルを用意して、テストしてください。 ーー 下記は小生が修正して実行してみたコード。 テストには、B列にはそれらしきテストデータを入力しておくこと。 アドレスは自分のものを取り合えず入れてテスト。 Sub sendmail_sample1() '---コード1|outlookを起動する Dim toaddress, ccaddress, bccaddress As String '変数設定:To宛先、cc宛先、bcc宛先 Dim subject, mailBody, credit As String '変数設定:件名、メール本文、クレジット、添付 Dim outlookObj As Object 'Outlook.Application 'Outlookで使用するオブジェクト生成 Dim mailItemObj As Object 'Outlook.MailItem 'Outlookで使用するオブジェクト生成 '---コード2|差出人、本文、署名を取得する--- toaddress = Range("B2").Value 'To宛先 'ccaddress = Range("B3").Value 'cc宛先 'bccaddress = Range("B4").Value 'bcc宛先 subject = Range("B5").Value '件名 mailBody = Range("B6").Value 'メール本文 'credit = Range("B7").Value 'クレジット '---コード3|メールを作成して、差出人、本文、署名を入れ込む--- Set outlookObj = CreateObject("Outlook.Application") Set mailItemObj = outlookObj.CreateItem(olMailItem) mailItemObj.BodyFormat = 3 'リッチテキストに変更 mailItemObj.To = toaddress 'to宛先をセット mailItemObj.CC = ccaddress 'cc宛先をセット mailItemObj.BCC = bccaddress 'bcc宛先をセット mailItemObj.subject = subject '件名をセット '---コード4|メール本文を改行する mailItemObj.Body = mailBody & vbCrLf & vbCrLf & credit 'メール本文 改行 改行 クレジット '---コード5|自動で添付ファイルを付ける--- Dim attached As String Dim myattachments As Object 'Outlook.Attachments 'Outlookで使用するオブジェクト生成 Set myattachments = mailItemObj.Attachments 'attached = Range("B9").Value '添付ファイル 'myattachments.Add attached 'attached = ThisWorkbook.Path & "outlookメール操作.xlsm" '---コード6|メールを送信する--- 'mailItemObj.Save '下書き保存 mailItemObj.Display 'メール表示(ここでは誤送信を防ぐために表示だけにして、メール送信はしない) '---コード7|outlookを閉じる(オブジェクトの解放)--- Set outlookObj = Nothing Set mailItemObj = Nothing End Sub

maiboutan1
質問者

お礼

早速のご回答のみならず、細かく丁寧なご説明をいただき感謝申し上げます。 ご指導をいただきました内容はトライしてみます。 どうもありがとうございました。 可能でしたら、今後もご指導をいただければと思います。

maiboutan1
質問者

補足

Imogasi 様 お世話になります。 ご連絡が遅くなりました、お教えいただい通り自分のわかる範囲で 行ってみましたがうまくいきません。 下記に処理内容を記述致しました。 ご確認をいただきたくお願いいたします。 (1)『Googleで「Outlook 参照設定」で調べてみてください。』 →Micro Soft Outlook 16 Object library にチェックマークを入れました。 (2)『徐々に一行ずつ、コメント化をはづし、As Objectは元(質問文の通りということ)に戻してテストしてください。 添付ファイルのところは、しばらくはコメント化しておいて、最後にそれだけをコメント化をはずして、添付ファイルを用意して、テストしてください。』 →すみません、この文章の意味が理解できませんでした。お手数ですが嚙み砕いてご説明頂けませんでしょうか。 (3)(2)を飛ばして(1)の作業後に、Imogasi 様にお作りいただいた ---コード1 ~ ---コード7 をコピーペーストして作業した結果が ---コード3の『Set mailItemObj = outlookObj.CreateItem(olMailItem) mailItemObj.BodyFormat = 3 'リッチテキストに変更』 で止まり『コンパイルエラー:構文エラー』が出てしまいました。 原因及び修正方法を教えていただけないでしょうか?

その他の回答 (1)

  • oboroxx
  • ベストアンサー率40% (317/792)
回答No.1

内容をきちんと見てないですが、最後のEnd Subはないのでしょうか? それが原因かも

maiboutan1
質問者

補足

早速のご連絡をいただき、ありがとうございました。余白の関係で下にかくれていて見えないのですが、End Sub は書いてあります。 一ヶ月程トライしていますが、知識が無いため進んでいません。どうかお力をお貸しいただけませんでしょうか? よろしくお願い致します。

関連するQ&A