我剛剛從Outlook 2010升級到2013,並且遇到了問題。我使用下面的代碼進行設置,以便刪除或移動到垃圾箱文件夾中的任何內容都會自動標記爲已讀。Outlook 2013:將項目標記爲刪除/移至垃圾時已讀取
Option Explicit
Dim WithEvents DeletedItems As Outlook.Items
Private Sub Application_Startup()
Set DeletedItems = Session.GetDefaultFolder(olFolderDeletedItems).Items
End Sub
Private Sub DeletedItems_ItemAdd(ByVal Item As Object)
If Item.UnRead = True Then
Item.UnRead = False
Item.Save
End If
End Sub
它的工作就像一個魅力在2010年,但不會在2013年我沒有多少運氣找到一個直接適用的答案在所有的工作,我太新VBA有一個關於如何應用我遇到的一些答案的好圖片,所以任何幫助,將不勝感激。
乾杯。
編輯:這是我用來檢查Outlook如何看到已刪除電子郵件的已讀/未讀狀態的代碼。我從here中解除了Pause
函數。
Private Sub DeletedItems_ItemAdd(ByVal Item As Object)
RememberItem Item 'Remember which email this is
Debug.Print "At start: " & Item.UnRead 'Should be True
If Item.UnRead = True Then
Item.UnRead = False
Item.Save
End If
Debug.Print "After mark read: " & Item.UnRead 'Should be False
Pause 10 'In separate module. Code from https://stackoverflow.com/a/30196332/2623367
Debug.Print "After pause: " & Item.UnRead 'Should be False unless item has become Unread
End Sub
Private Function RememberItem(Optional ByVal Item As Object) As Object
'Allows check-up on the deleted item after event-handler is done with it.
Static oDeleted As Object
If Not Item Is Nothing Then Set oDeleted = Item
Set RememberItem = oDeleted
End Function
Private Sub CheckStatus()
Dim CheckItem As Object
Set CheckItem = RememberItem
Debug.Print "Follow-up check: " & CheckItem.UnRead 'Should be False
End Sub
我從這個得到的輸出是:
- 啓動時:真(項目未讀的 - 這是正確的)
- 標記閱讀後:假(項目被讀取 - 這可能是也可能不是正確)
- 暫停後:假(項目被讀取 - 這是不正確的)
- 後續檢查:假(項目被讀取 - 這是不正確的)
UPDATE:
如果有人遇到此問題,請稍等。標記爲工作的答案確實解決了我的問題,但我偶爾仍然看到一些奇怪的行爲。再多一點發現,我的問題的根本原因是Outlook和電子郵件服務器之間的同步問題。 Outlook會刪除東西,但同步會變得棘手,而且在將自己的更新發送回去之前,Outlook看起來像從服務器獲取更新。這些差異似乎導致Outlook無法跟蹤應刪除的狀態。
我的工作場所使用Google Apps作爲他們的電子郵件提供商,並且我已經使用正確的IMAP設置在Outlook中設置了所有內容,但Google和展望不會很好。通過使用所選答案和Google的Outlook syncing tool for Google Apps能夠消除所有不可預知的行爲。同時確認我的原始代碼與Google Apps同步工具配合使用時的行爲應該如此。
我應該很早就意識到這個問題可能是谷歌和Outlook在根本上一起出錯,但它甚至沒有出現在我的面前,這就是爲什麼我沒有提到早先的谷歌組件的原因。希望此更新能夠拯救出現問題的其他人!
是否有任何錯誤消息?將項目放入已刪除的項目文件夾時會發生什麼?代碼是否運行? – OpiesDad
我在Outlook 2013中測試了這段代碼,它在爲我工作。 – OpiesDad
您是否記得打開Outlook時打開宏? – OpiesDad