我在另一台计算机上使用Outlook设置了一个宏,但是现在切换了计算机后,我无法使用它。当我尝试运行最后一个“私人子”时,它无法识别名称,并弹出“宏”选择框,其中未列出任何选项。
我不喜欢必须手动将“已删除邮件”文件夹中的电子邮件标记为已读,尤其是考虑到它们具有惊人的远见,可以将丢弃的草稿标记为未读。
这是曾经起作用的代码:
Dim WithEvents g_OlkFolder As Outlook.Items
Private Sub Application_Quit()
Set g_OlkFolder = Nothing
End Sub
Private Sub Application_Startup()
Set g_OlkFolder = Session.GetDefaultFolder(olFolderDeletedItems).Items
End Sub
Private Sub g_OlkFolder_ItemAdd(ByVal Item As Object)
Item.UnRead = False
Item.Save
End Sub
答案 0 :(得分:0)
以下是要尝试检查的几件事:
Item.UnRead = False
行上放置一个断点。如果它不止于此,则您的方法未运行。答案 1 :(得分:0)
尝试使用Application.Session property,或使用我更喜欢的GetNamespace方法
示例
Private WithEvents Items As Outlook.Items
Private Sub Application_Startup()
Dim olNs As Outlook.NameSpace
Dim DeletedFolder As Outlook.MAPIFolder
Set olNs = Application.GetNamespace("MAPI")
Set DeletedFolder = olNs.GetDefaultFolder(olFolderDeletedItems)
Set Items = DeletedFolder.Items
End Sub
Private Sub Items_ItemAdd(ByVal Item As Object)
If TypeOf Item Is Outlook.MailItem Then
' do something with Item
End If
End Sub
答案 2 :(得分:0)
或定义olFolderDeletedItems或将其替换为3。 有关详细信息,请参见this link。
答案 3 :(得分:0)
在完全丢弃我的代码并从头开始时,我想出了一个比我尝试的要简单得多的解决方案。谢谢大家的帮助!
Sub MDAU()
Dim DI As Outlook.Items
Dim MSG As Object
Set DI = Session.GetDefaultFolder(olFolderDeletedItems).Items
Set MSG = Application.CreateItem(olMailItem)
For Each MSG In DI
MSG.UnRead = False
Next
End Sub