【问题标题】:How to identify a calendar entry in MS Outlook using VBA?如何使用 VBA 识别 MS Outlook 中的日历条目?
【发布时间】:2019-01-15 01:33:58
【问题描述】:

我有一个代码循环遍历所有已发送的 MS Outlook 电子邮件,并对每封电子邮件执行一些程序。我的代码中断但如果我的已发送文件夹中有一个日历条目会导致错误。

Run-time error '13': Type mismatch.

你们知道如何识别我已发送文件夹中的项目是否是日历条目,以便我可以跳过它吗?

sub test()


Dim oApp As Outlook.Application
Set oApp = CreateObject("Outlook.application")


Dim olFolder As Outlook.MAPIFolder
Set olFolder = oApp.GetNamespace("MAPI").GetDefaultFolder(olFolderSentMail)

Dim email_cnt As Long: email_cnt = olFolder.Items.Count


for t = 1 to email_cnt

    Dim oMail As Outlook.MailItem
    Set oMail = olFolder.Items.Item(t)        
    'do something;

Next t

End Sub

【问题讨论】:

    标签: vba ms-access outlook


    【解决方案1】:

    检查oMail.Class = 43(43 是 olMailItem)。您还需要避免遍历文件夹中的所有项目(为什么需要这样做?)并避免使用多点表示法 (olFolder.Items.Item) - 在进入循环之前将 Items 集合缓存在变量中。

    【讨论】:

    • 我的代码要复杂得多,我不会遍历所有项目。我只是在这里举了一个小例子。谢谢。你的解决方案奏效了。
    • 在任何情况下,尽量使用 items.Find/FindNext 或 Items.Restrict:它比 any 类型的循环更有效。跨度>
    猜你喜欢
    • 2020-03-14
    • 2019-01-19
    • 2016-04-04
    • 1970-01-01
    • 2017-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    相关资源
    最近更新 更多