Outlook邮件度量值vba不匹配类型

Outlook邮件度量值vba不匹配类型,vba,outlook,Vba,Outlook,但是,尝试从另一个线程使用vba时,会在“foreach olMail In flInbox.Items”行中获取不匹配的类型。知道我做错了什么吗?我引用了outlook和excel Dim olMail As MailItem Dim aOutput() As Variant Dim lCnt As Long Dim xlApp As Excel.Application Dim xlSh As Excel.Worksheet Dim flInbox As Folder Set flInbox

但是,尝试从另一个线程使用vba时,会在“foreach olMail In flInbox.Items”行中获取不匹配的类型。知道我做错了什么吗?我引用了outlook和excel

Dim olMail As MailItem
Dim aOutput() As Variant
Dim lCnt As Long
Dim xlApp As Excel.Application
Dim xlSh As Excel.Worksheet
Dim flInbox As Folder

Set flInbox = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)

ReDim aOutput(1 To flInbox.Items.Count, 1 To 4)

For Each olMail In flInbox.Items
    If TypeName(olMail) = "MailItem" Then
        lCnt = lCnt + 1
        aOutput(lCnt, 1) = olMail.SenderEmailAddress 'maybe stats on domain
        aOutput(lCnt, 2) = olMail.ReceivedTime 'stats on when received
        aOutput(lCnt, 3) = olMail.ConversationTopic 'group based on subject w/o regard to prefix
        aOutput(lCnt, 4) = olMail.Subject 'to split out prefix
    End If
Next olMail

Set xlApp = New Excel.Application
Set xlSh = xlApp.Workbooks.Add.Sheets(1)

xlSh.Range("A1").Resize(UBound(aOutput, 1), UBound(aOutput, 2)).Value = aOutput
xlApp.Visible = True
链接:


对于每个循环,您假定从Items集合的索引器获得的对象正在将MailItem对象返回到olMail变量中。该文件夹可以包含非电子邮件消息,例如ReportItem或MeetingRequest对象。而是声明一个对象变量,并检查MessageClass或Type的值,以在将消息强制转换到特定对象之前验证该消息是否为MailItem对象。我还将使用带有索引器的For循环,而不是For-Each循环,这样在迭代Outlook对象时会消耗更少的内存资源。

您正在测试的文件夹可能不仅仅包含邮件吗?也许还有其他文件夹?嘿,布莱克伯德。不知道你是什么意思?这是我的普通收件箱,没有子文件夹。只有收件箱、草稿、已发送邮件、已删除的项目。默认的Outlook设置。更好的是:
如果TypeOf obj是mailtime,那么…
你们太棒了!将olMail改为Variant,工作起来很有魅力!希望有一天我能像你一样好,在此之前,我感谢你的帮助@用户不要忘记将答案标记为已接受。这表明你的欣赏,并结束了线程。