【问题标题】:Move Emails received in the afternoon to another folder将下午收到的电子邮件移动到另一个文件夹
【发布时间】:2020-10-07 06:58:04
【问题描述】:

我在早上(上午 10 点)和下午(下午 15 点 - 下午 16 点)收到电子邮件提醒(相同的发件人,相同的电子邮件对象)。 我想通过“运行脚本”规则将下午警报移动到不同的文件夹。 我试过这个脚本但没有用:

Sub MovebyTime(oItem As Outlook.MailItem)
    With oItem
        If Format(oItem.ReceivedTime, "h") >= 15 And _
           Format(oItem.ReceivedTime, "h") < 16 Then
            .Move Session.GetDefaultFolder(olFolderInbox).folders("Foldername")
        End If
    End With
End Sub

感谢您的帮助

【问题讨论】:

  • 您能否具体说明一下,是什么问题?错误/问题发生在哪里?
  • 你试过在调试器下运行代码吗?
  • @TomaszPaluch 嵌入的代码没有正确过滤电子邮件,它将所有电子邮件移动到新文件夹,这意味着条件没有按预期工作,这就是问题
  • 我想到的另一件事是:Format 的结果是一个字符串。因此,您可能必须比较“15”而不是 15 和“16”而不是 16(或在使用 CLng(Format(.....)) 进行比较之前转换为 lng

标签: vba email outlook rules


【解决方案1】:

对上一个答案的小更新:

 Set ns = application.GetNamespace("MAPI")
 set targetFolder = ns.Folders("Mailboxname").Folders("Foldername")
 oItem.Move targetFolder

这也涵盖了您有多个邮箱的情况

【讨论】:

    【解决方案2】:

    首先,我建议在附加的调试器下运行代码。因此,您将能够理解您的代码有什么问题。

    但我会从打破以下代码行并在单独的行上声明每个属性或方法调用开始:

    Session.GetDefaultFolder(olFolderInbox).folders("Foldername")
    

    比较:

    Dim inbox as Outlook.Folder
    Dim targetFolder as Outlook.Folder
    
    Set inbox = Session.GetDefaultFolder(olFolderInbox)
    Set targetFolder = ns.folders("Foldername")
    
    oItem.Move(targetFolder)
    

    【讨论】:

    • 我不确定这是否有效。 ns 是一个命名空间对象,而 GetdefaultFolder 返回一个文件夹对象。测试时出现类型不匹配。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-25
    • 1970-01-01
    相关资源
    最近更新 更多