【问题标题】:How to test Mailitem.ReceivedTime against cell value?如何在逻辑上测试邮件项?
【发布时间】:2022-09-28 05:21:49
【问题描述】:

此代码旨在根据逻辑检查是否在用户在单元格 C6 中指定的日期之后收到邮件项来下载 Outlook 电子邮件附件。

单步执行代码表明它根本没有检查逻辑。代码读取下面的代码行,就好像它检查邮件项目本身一样(即在 01/01/01 代码收到的邮件项目说如果 mailitem=01/01/01 那么)当然邮件项目总是满足这个检查

If MailItem.ReceivedTime >ThisWorkbook.Worksheets(\"Email_Info\").Range(\"C6\").Value Then

任何有关确保逻辑测试有效的帮助都会有所帮助。我可以在同一代码中引用工作簿和 Outlook 吗?

如果有帮助,其余代码如下

Option Explicit


Sub Download_Outlook_Attachemtns()



Dim olAPP As Outlook.Application
Dim olNS As Outlook.Namespace
Dim olFolder As Outlook.MAPIFolder
Dim olItem As Object
Dim MailItem As Outlook.MailItem
Dim olAtt As Outlook.Attachment


Set olAPP = New Outlook.Application
Set olNS = olAPP.getnamespace(\"MAPI\")

\'single folder link to hidden sheet folders([admin].[Mailbox].text)
Set olFolder = olNS.Folders(\"John@work.com\")
Set olFolder = olFolder.Folders(\"Inbox\")
Set olFolder = olFolder.Folders(\"Work Requests\")



For Each olItem In olFolder.Items

If olItem.Class = olMail Then
Set MailItem = olItem

 For Each olAtt In MailItem.Attachments
If MailItem.ReceivedTime > ThisWorkbook.Worksheets(\"Email_Info\").Range(\"C6\").Value Then


   olAtt.SaveAsFile (\"C:\\Users\\John Smith\\Desktop\\WOR Email Download\") & olAtt.Filename
         End If
        Next olAtt
   

End If
Next olItem

End Sub
  • 转到具有If 条件的行并按 F9 切换断点,然后运行代码。当断点命中时,按 Ctrl+G 调出即时工具窗口然后键入?mailitem.receivedtime, ThisWorkbook.Worksheets(\"Email_Info\").Range(\"C6\").Value 以输出正在比较的两个值。它打印出您期望的内容吗?
  • 谢谢你的建议。因此,对于日期为 C6 VBA 正在读取正确的日期。出于某种原因,邮件项目是从随机电子邮件开始的。我的印象是这个脚本将从最新的电子邮件开始并按顺序进行。但是,当我在“Set MailItem=olItem”处建立中断时,MailItem 对象似乎以随机顺序循环。
  • 您需要比较两个日期对象,但在 Excel 中您似乎得到了一个字符串。

标签: excel vba outlook


【解决方案1】:

MailItem.ReceivedTime 属性返回一个Date,指示接收项目的日期和时间。但是以下属性和方法调用序列最有可能被评估为字符串:

ThisWorkbook.Worksheets("Email_Info").Range("C6").Value

因此,您正在尝试将日期实例与字符串进行比较。为了避免这种情况,您需要实例化一个日期以进行比较。使用 VBA 中可用的 CDate 函数将文本转换为日期对象。有关更多信息,请参阅Convert Text to Date?。

【讨论】:

    猜你喜欢
    • 2012-05-16
    • 2014-09-15
    • 2018-07-03
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多