我试图从Outlook中的共享收件箱中的子文件夹导入电子邮件信息到Excel电子表格。到目前为止,我遇到了很多问题,即访问收件箱的子文件夹,但找到了解决方案。我现在遇到的问题是代码在收件箱中存在相同数量的电子邮件后停止。例如,我想从“归档”文件夹中的信息(收件箱中的子文件夹),但如果在我的收件箱20级的电子邮件,然后当计数到达20码停,只给我的信息在“存档”文件夹中20个项目导入电子邮件信息到Excel
见下从Outlook执行我的代码。我已经标记了代码停止的地方。它给我的错误“aOutput(LCNT,1)=标超出范围”时我胡佛光标移到“aOutput”。如果我跳过代码为“SetxlApp ......”线,它会给我所有的电子邮件到这一点,数据填充(20个电子邮件即我的收件箱相同数量的项目)的Excel工作表,但我需要它来保持循环浏览文件夹的其余部分(可能是成千上万的项目)。任何人都可以对此有所了解吗?还有其他建议吗?谢谢你的帮助。
Sub EmailStats()
Dim olMail As Outlook.MailItem
Dim aOutput() As Variant
Dim lCnt As Long
Dim xlApp As Excel.Application
Dim xlSh As Excel.Worksheet
Dim flInbox As Folder
Dim olFolder As Outlook.MAPIFolder
Dim myNamespace As Outlook.NameSpace
Dim myRecipient As Outlook.Recipient
Set myNamespace = Application.GetNamespace("MAPI")
Set myRecipient = myNamespace.CreateRecipient("Team Inbox")
Set flInbox = Application.GetNamespace("MAPI").GetSharedDefaultFolder(myRecipient, olFolderInbox)
Set olFolder = flInbox.Folders("ARCHIVE")
ReDim aOutput(1 To flInbox.Items.Count, 1 To 4)
For Each olMail In olFolder.Items
If TypeName(olMail) = "MailItem" Then
On Error GoTo ErrorSkip
lCnt = lCnt + 1
aOutput(lCnt, 1) = olMail.SenderEmailAddress '**Code stops here**
aOutput(lCnt, 2) = olMail.ReceivedTime
aOutput(lCnt, 3) = olMail.ConversationTopic
aOutput(lCnt, 4) = olMail.Subject
End If
ErrorSkip:
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
End Sub
当我删除'On Error GoTo ErrorSkip'行时,我得到相同的错误。我只输入这个来尝试修复最初的问题,但它什么都不做。 –
你永远不会初始化lCnt变量。在进入循环之前将其初始化为0。 –
感谢您的评论。对不起,如果我不太熟悉Outlook VBA,但我试图在循环开始之前输入lCnt = 0,但我仍然有同样的问题。 –