dポイントプレゼントキャンペーン実施中!

お世話になります。

現在、Excel VBA(Excel2010)で、Outlook2010を立ち上げて、添付のExcelの表のE列【GL承認日】に日付を入れると、日付書式を確認して、メールが送信されるVBAを作成しています。

そこで、下記のVBAの下の方にある「myMail.Send」でメールが送信されるようになっていて、メールが送信された後、Outlookの【送信済みフォルダ】に送信済みメールが入ります。
その送信済みメールを【送信済みフォルダ】に入ったら、完全に削除するようにしたいのですが、どのようにVBAを追加すれば宜しいでしょうか?

ご存知の方、是非ご教示宜しくお願い致します。


↓該当のExcel VBAです。
----------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

Dim myOL As Object
Dim myMail As Object
Dim myBody As String
Dim n As Long

Dim mDate As Variant

On Error Resume Next

'GL承認日の列の日付書式指定
mDate = Array("yyyy/mm/dd")

'GL承認日の該当セルの日付書式を確認
For Each wz In mDate

'GL承認日の該当セルが空白でない場合は以下を処理
If Cells(Target.Row, Target.Column).Value <> "" Then

If InStr(Cells(Target.Row, Target.Column).NumberFormatLocal, wz) > 0 Then

'メールアプリケーションをOutlookに指定
Set myOL = GetObject(, "Outlook.Application")

On Error GoTo 0

If myOL Is Nothing Then
Set myOL = CreateObject("Outlook.Application")
myOL.getnamespace("MAPI").GetDefaultfFolder(6).display
End If

Set myMail = myOL.CreateItem(0)


'B、C行のセル位置を数値で取得
n = Cells(Target.Row, Target.Column).Row

'メール本文
myBody = "振替伝票入力のGL承認が " & Format(Cells(Target.Row, Target.Column).Value, "yyyy/mm/dd") _
& " に完了しました。" & vbNewLine & vbNewLine _
& "●振替伝票No: " & Range("C" & n).Value & vbNewLine & vbNewLine _
& "================================" & vbNewLine _
& " ▲▲部 ××グループ" & vbNewLine _
& "================================"

If Range("B" & n).Value = "ooo" Then
myMail.to = "ooo@***.co.jp"
'ElseIf Range("B" & n).Value = "qqq" Then
' myMail.To = "qqq@***.co.jp"
End If

'メールのタイトル、本文、本文の形式を指定
myMail.Subject = "【振替伝票 GL承認完了通知】"
myMail.Body = myBody
myMail.BodyFormat = 1 'テキスト形式

'メールを送信
myMail.Send
       (↑此処でメールが【送信済みフォルダ】に入りますが、このタイミングで【送信済みフォルダ】に入ったメールを完全削除したいです。)

'変数をリセット
Set myMail = Nothing
Set myOL = Nothing

Else

Exit Sub

End If

End If

Next

Exit Sub

End Sub

「Excel VBA Outlook送信済」の質問画像

A 回答 (1件)

あまり検証していないのですが、



myMail.DeleteAfterSubmit = True

myMail.Send
の前に入れてみてはいかがでしょうか。
送信後に送信済みアイテムに入らずに消えると思います。

あるいは、たとえば削除済みアイテムに残したいなら、
myMail.DeleteAfterSubmit = True
のかわりに
Set myMail.SaveSentMessageFolder = myOL.getnamespace("MAPI").GetDefaultfFolder(3)
でいけると思います。
    • good
    • 0
この回答へのお礼

ご返信ありがとうございます!

myMail.DeleteAfterSubmit = true

を、Mymail.Send の前に入れてみましたところ、望み通りの動作が可能になりました。
(送信済みアイテムに入る事なく、消えました。)

大変助かりました、有難うございました。

お礼日時:2013/08/07 18:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています