我有一个代码循环遍历所有已发送的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
答案 0 :(得分:2)
检查oMail.Class = 43
(43是olMailItem)。您还需要避免循环访问文件夹中的所有项目(为什么要这样做?),并避免使用多点符号(olFolder.Items.Item)-在进入循环之前将Items集合缓存在变量中。