【问题标题】:excel vba does not find outlook 2010 appointment using restrict filterexcel vba 使用限制过滤器找不到 Outlook 2010 约会
【发布时间】:2018-10-18 10:37:35
【问题描述】:

我在 Outlook 2010 中遇到了一个让我发疯的日历问题。我对 Outlook 和 VBA 都很陌生,所以我可能会忽略一些相当明显的东西。但是,经过大量研究和测试,我没有找到解决方案。

使用 Excel VBA,我已将生日添加到 Outlook 2010 日历作为全天约会(开始时间为上午 12:00,结束时间为次日上午 12:00)。当我随后尝试使用以下过滤器查找约会时,程序不会返回该日期的任何内容(在示例中,14.10.2018 应该包含 1 个约会):

Dim dAppDate as Date
dAppDate = "14.10.2018"
sFilter = "[Start] = '" & Format$(dAppDate, "dd.mm.yyyy") & "'"
Set onamespace = oApp.GetNamespace("MAPI")
Set oFolder = onamespace.GetDefaultFolder(olFolderCalendar)
Set oItems = oFolder.Items
Set oFilterAppointments = oItems.Restrict(sFilter)

但是,如果我只是稍微更改过滤器,如下所示:

sFilter "[Start] >= '" & Format$(dAppDate, "dd.mm.yyyy") & "'"

我在 2018 年 10 月 14 日之后获得了所有约会,但不是那个日期的约会。有任何想法吗?这让我很兴奋。我也尝试在过滤器中包含开始时间(12:00 AM),但这也没有带来任何乐趣。任何想法都将不胜感激。

【问题讨论】:

    标签: excel vba filter outlook


    【解决方案1】:

    我认为有两个问题:

    • 日期字符串必须采用明确的格式,因此要么拼出月份,要么使用类似“yyyy/mm/dd”的内容
    • 至少在美国,我在搜索日期时无法使用 = 运算符,因此我尝试了一个组合过滤器,并且成功了:

    sFilter = "[Start] > '" & Format(dAppDate - 1, "yyyy/mm/dd") & "'" & " AND [End] < '" & Format(dAppDate + 1, "m/d/yyyy") & "'"
    

    【讨论】:

    • 您好罗恩,非常感谢您的意见。在这种情况下,我不是唯一一个不能让 '=' 运算符工作的人,我不知何故松了一口气,但不得不求助于杂耍是很烦人的。我想知道在某处是否有对这种行为的官方解释。
    • @BobWinMunich 日期在 Excel VBA 中的行为异常。我没有看到任何关于这种行为的文档;我在 Google 搜索中遇到的所有示例都没有使用带有日期的 = 运算符,尽管它似乎可以处理文本。
    • @BobWinMunich 这一点也不逊色,在大型数据库上运行可能需要更长的时间,但您也可以遍历所有约会项目,以及Collect(在CollectionDictionary 对象,那些Start = dAppdate
    • @SimonLi 是的,但我们正在寻找解释为什么等于 = 运算符本身不起作用。该示例仍然使用日期范围。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-14
    • 2019-11-25
    • 2014-03-30
    • 1970-01-01
    • 1970-01-01
    • 2018-08-13
    • 1970-01-01
    相关资源
    最近更新 更多