日历设置会干扰[dateReceived]筛选器



我正在尝试从Excel扫描共享收件箱,查找在某个日期收到的带有附件的电子邮件。目的是保存附件并将其导入运行代码的工作簿中。

这是我迄今为止从Outlook下载附件并在Excel中打开的代码,用于扫描收件箱并在找到的电子邮件上打印一些信息

Sub extractEmailDetails()
    Dim oOlAp As Object, oOlns As Object, oOlInb As Object, oOlInp As Object
    Dim oOlItm As Object
    Dim strDateFrom As String, strDateTo As String
    Dim searchDate As Date
    searchDate = #12/9/2015# 'mm/dd/yyyy
    strDateFrom = "'" & Format(searchDate, "dd/mm/yyyy") & "'"
    strDateTo = "'" & Format(searchDate + 1, "dd/mm/yyyy") & "'"
    '~~> Get Outlook instance
    Set oOlAp = GetObject(, "Outlook.application")
    Set oOlns = oOlAp.GetNamespace("MAPI")
    Set oOlInp = oOlns.Folders("SHR-Cust Ops MI Team Inbox")
    Set oOlInb = oOlInp.Folders("Inbox")
    '~~> Store the relevant info in the variables
    For Each oOlItm In oOlInb.Items.Restrict("[attachment] = True AND [receivedTime] > " & strDateFrom & " AND [receivedTime] < " & strDateTo)
        Debug.Print oOlItm.ReceivedTime & " " & oOlItm.Subject
    Next
End Sub

当我搜索12月8日时,它只会返回早上8点之后收到的电子邮件。

我将日历中的工作时间设置更改为午夜到午夜(无工作时间),然后代码会带回指定日期的所有电子邮件。然而,我不能让日历上没有工作时间。有没有办法将默认行为更改为忽略工作时间?

听起来你确实得到了GMT+当地时区偏移量。您的TZ是什么?

在解决了这个问题之后,我找到了一个解决方案。很明显。你不能只提供日期,你还需要提供时间,所以:

[...]
strDateFrom = "'" & Format(searchDate, "dd/mm/yyyy") & "'"
strDateTo = "'" & Format(searchDate + 1, "dd/mm/yyyy") & "'"

成为

[...]
strDateFrom = "'" & Format(searchDate, "dd/mm/yyyy hh:mm") & "'"
strDateTo = "'" & Format(searchDate + 1, "dd/mm/yyyy hh:mm") & "'"

最新更新