如何使用 VBA 识别 MS Outlook 中的日历条目?

Posted

技术标签:

【中文标题】如何使用 VBA 识别 MS Outlook 中的日历条目?【英文标题】:How to identify a calendar entry in MS Outlook using VBA? 【发布时间】: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

【问题讨论】:

【参考方案1】:

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

【讨论】:

我的代码要复杂得多,我不会遍历所有项目。我只是在这里举了一个小例子。谢谢。你的解决方案奏效了。 在任何情况下,尽量使用 items.Find/FindNext 或 Items.Restrict:它比 any 类型的循环更有效。跨度>

以上是关于如何使用 VBA 识别 MS Outlook 中的日历条目?的主要内容,如果未能解决你的问题,请参考以下文章

MS Outlook 干扰 Access vba 程序

如何使用excel vba,对outlook进行操作?

使用 VBA 访问 Outlook 中的文件夹

使用电子邮件 Outlook 中的链接触发 VBA 代码

如何使用 VBA 在 Outlook 365 上启动时显示所有日历?

MS Access vba中的分组字段