出産前後の痔にはご注意!

アウトルックで、受信トレイのメールを未読のまま削除して、削除済みアイテムへ移動させるのですが、
たくさん溜まった削除済みアイテムの未読をVBAで既読にする方法はありますか?

手作業なら
削除済みアイテム→すべて開封済みにする
でできます。

VBAでやる方法をお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

削除済みアイテムのメッセージをすべて開封済みにするものを作ってみました。



Sub DeletedAllRead()
Dim oOL
Dim myDeletedFolder
Dim myNamespace
Dim e
Set oOL = CreateObject("Outlook.Application")
Set myNamespace = oOL.GetNamespace("MAPI")
Set myDeletedFolder = myNamespace.GetDefaultFolder(3) 'olFolderDeletedItems = 3
For Each e In myDeletedFolder.Items
e.UnRead = False
Next
End Sub


動作確認はWindows XP上のOffice 2007で行いました。

Outlook以外のVBAで動作させるものとして作ったのですが、Outlook VBAでもそのままで動作OKでした。(Outlook VBAでCreateObject("Outlook.Application")はいかにも間抜けですが)

Outlookを終了させるコード(oOL.Quit)は入っていませんが、テストした限りにおいては大丈夫なようです。
(Outlookが起動していな状態でOutlook以外のVBAで上記プロシージャを動作させると終了後OUTLOOK.EXEのプロセスが自動的に消えました)

ついでの話ですが、プロシージャの外(前でも後ろでも)に一行
DeletedAllRead
を追加して.vbsファイルにテキスト保存したところVBScriptで動作しました。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2013/05/02 22:17

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QExcel VBA Outlook送信済メール削除

お世話になります。

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

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

Aベストアンサー

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

myMail.DeleteAfterSubmit = True

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

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

QEXCELマクロで上書きメッセージ無しで保存する方法

EXCELマクロで上書きメッセージ無しで保存する方法をお願いします
ActiveWorkbook.SaveAs "C:\Documents andSettings\Nakatani\MyDocuments\Book1.xls"
の様にするとすでにファイルがある場合上書きメッセージが出ます
メッセージを出さずに上書きするプログラミングを教えて下さい
宜しくお願いします

Aベストアンサー

Application.DisplayAlerts = False
ActiveWorkbook.SaveAs "C:\Documents andSettings\Nakatani\MyDocuments\Book1.xls"
Application.DisplayAlerts = True

Qエクセル 同じ値を探して隣の数値をコピーする

エクセルで以下の作業を簡単にする方法を教えて下さい。

Sheet1の1行目には見出しがあり、A列とB列の2行目から下にデータが入っています。(約200行)
A列     B列
田中    13
山本     8
谷口    11
鈴木    6
佐々木    9
奥村     15




Sheet2のA列1行目から下には別のデータが入っています。(約600行)
A列
太田川
山村
田中
多賀先
鈴木
奥村
幸田




Sheet2のA列のデータと完全一致するデータ(名前)をSheet1のA列から探して、同じ名前があれば、その隣のB列にある数値をSheet2のB列に貼り付ける。
見つからない場合はSheet2のB列は空欄のままです。
Sheet2
A列      B列
太田川     
山村
田中    13
多賀先
鈴木     6
奥村    15
幸田


Aベストアンサー

シート2のB2セルには次の式を入力して下方にドラッグコピーします。

=IF(COUNTIF(Sheet1!A:A,A2)=0,"",VLOOKUP(A2,Sheet1!A:B,2,FALSE))


人気Q&Aランキング

おすすめ情報