我希望可以问这种问题。目前,尝试自己编写代码完全超出了我的范围。
我需要一个用于 Outlook 2007 的宏,只要有任何东西到达,它就会永久删除“已发送邮件”文件夹的所有内容。可能吗?如何设置所有内容,以便用户不必单击任何内容来运行它?
我知道我要一条鱼,我很尴尬,但我真的需要那东西……
编辑:
我已将其粘贴到 VBA 编辑器中,并粘贴到一个新模块中:
Public Sub EmptySentEmailFolder()
Dim outApp As Outlook.Application
Dim sentFolder As Outlook.MAPIFolder
Dim item As Object
Dim entryID As String
Set outApp = CreateObject("outlook.application")
Set sentFolder = outApp.GetNamespace("MAPI").GetDefaultFolder(olFolderSentMail)
For i = sentFolder.Items.Count To 1 Step -1
sentFolder.Items(i).Delete '' Delete from mail folder
Next
Set item = Nothing
Set sentFolder = Nothing
Set outApp = Nothing
End Sub
这只是我在本网站某处发现的删除已删除项目的一段代码的略微修改版本。当我运行它时,它确实删除了已发送邮件文件夹。您能否帮我修改它,使其在文件夹中出现任何内容时删除已发送项目,并且用户无需单击任何内容即可运行它?我需要它是一个完全自动化的过程。
编辑 2:如果您认为有比 VBA 更好的工具来实现这一点,请不要犹豫,编辑标签和评论。
编辑3:我做了一些有时有效的事情,但有时却没有。这非常复杂。我设置了一个规则,即抄送每封发送给我的带有附件的电子邮件。当我收到一封电子邮件时,另一条规则运行以下代码。
Sub Del(item As Outlook.MailItem)
Call EmptySentEmailFolder
End Sub
该事物具有三种行为,我无法确定是什么触发了哪种行为。有时,事情确实会清除“已发送邮件”文件夹。有时它什么也不做。有时,第二条规则会给出“操作失败”的错误消息。
每当有东西来自我的地址时采取行动的想法是非最佳的,出于简洁起见我将省略的原因。我试图用报告替换它。我制定了一个规则,每当我发送电子邮件时都会发送一份送达报告。然后另一条规则在收到报告后运行代码。然而,这只有一种行为:它从不做任何事情。
这两个想法都非常复杂,任何事情都可能真的出错,我在调试它们时遇到了麻烦。两者都是非最佳解决方案。