【问题标题】:Delete items in a folder in Outlook that are more than a day old删除 Outlook 文件夹中超过一天的项目
【发布时间】:2019-05-10 04:13:29
【问题描述】:

我想在 Outlook 中删除文件夹 DSP 报告中超过 1 天的项目,我被要求使用 vba 代码执行此任务。

现在,代码运行顺利,没有错误,但没有删除任何内容,昨天和今天在我运行代码后收到的邮件。我使用 F8 进行故障排除,但仍然没有错误。

Sub DSP_Report_Deletion()
'''''''''''''''''''''''''''''''''''''''''''''
Dim olApp As Outlook.Application
Dim objNS As Outlook.NameSpace
Dim olFolder As Outlook.MAPIFolder
Dim oItems As Outlook.Items
Dim i

Set olApp = Outlook.Application
Set objNS = olApp.GetNamespace("MAPI")
Set olFolder = objNS.GetDefaultFolder(olFolderInbox)
Set olFolder = olFolder.Folders("DSP Reports")
Set oItems = olFolder.Items


For i = oItems.Count To 1 Step -1
    If DateDiff("d", oItems.Item(i).SentOn, Now) > 1 Then
        oItems.Item(i).Delete
    End If
Next

'tidy up Outlook
Set olFolder = Nothing
Set oNs = Nothing
Set oOutlook = Nothing
End Sub

【问题讨论】:

  • 嗯,你的代码对我来说工作正常。所有 2 天或更早的电子邮件都将被删除
  • 设置 Outlook 规则来执行此操作会更容易,特别是如果它必须每天运行。
  • 我现在知道为什么了,我应该使用 >=1 来包含 1 天前的项目。感谢您的意见。

标签: excel vba outlook


【解决方案1】:
Sub DSP_Report_Deletion()
'''''''''''''''''''''''''''''''''''''''''''''
Dim olApp As Outlook.Application
Dim objNS As Outlook.NameSpace
Dim olFolder As Outlook.MAPIFolder
Dim oItems As Outlook.Items
Dim i

Set olApp = Outlook.Application
Set objNS = olApp.GetNamespace("MAPI")
Set olFolder = objNS.GetDefaultFolder(olFolderInbox)
Set olFolder = olFolder.Folders("DSP Reports")
Set oItems = olFolder.Items


For i = oItems.Count To 1 Step -1
    If DateDiff("d", oItems.Item(i).SentOn, Now) >= 1 Then
        oItems.Item(i).Delete
    End If
Next

'tidy up Outlook
Set olFolder = Nothing
Set oNs = Nothing
Set oOutlook = Nothing
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    相关资源
    最近更新 更多