こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

-広告-

解決済みの質問

Outlook2013自動送信が出来ません。

はじめまして、いつもお世話になっております。
excel vba の学習を始めたばかりの初心者です。
あるサイトで自動でoutloook2013を起動しファイルを添付して送信するマクロを
見つけ送信しようとしましたが、『コンパイルエラー』の為、上手くいきません。
どなたか画像をご確認いただき、修正方法をご教示いただきたく存じます。
よろしくお願いいたします。

以下がコンパイルエラーの出たプロシージャ(抜粋)
黄色のライン→Sub sendmail_sample1()

反転→Dim outlookObj As Outlook.Application 'Outlookで使用するオブジェクト生成
以下がコンパイルエラーの出たプロシージャ(全体)

Sub sendmail_sample1()

'---コード1|outlookを起動する
Dim toaddress, ccaddress, bccaddress As String '変数設定:To宛先、cc宛先、bcc宛先
Dim subject, mailBody, credit As String '変数設定:件名、メール本文、クレジット、添付
Dim outlookObj As Outlook.Application 'Outlookで使用するオブジェクト生成
Dim mailItemObj As 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 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

投稿日時 - 2017-10-02 22:02:46

QNo.9381453

困ってます

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

勿論、モジュール(このコード)の最後に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

投稿日時 - 2017-10-03 10:01:03

補足

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 'リッチテキストに変更』
で止まり『コンパイルエラー:構文エラー』が出てしまいました。

原因及び修正方法を教えていただけないでしょうか?

投稿日時 - 2017-10-07 19:20:06

お礼

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

投稿日時 - 2017-10-03 12:29:59

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(2)

ANo.1

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

投稿日時 - 2017-10-03 00:18:13

補足

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

投稿日時 - 2017-10-03 06:47:14

-広告-
-広告-
-広告-
-広告-