【问题标题】:Exporting emails from an Outlook subfolder to Excel将电子邮件从 Outlook 子文件夹导出到 Excel
【发布时间】:2015-03-09 12:05:00
【问题描述】:

我找到了一个 VBA 宏,它可以从 Outlook 接收电子邮件并将它们放入 Excel 中的单元格中。 该代码有效,但我只想告诉 Excel 从特定子文件夹获取电子邮件。在我的收件箱文件夹中,我有一个名为 Info 的子文件夹。我希望能够从此子文件夹中获取电子邮件。

这是我现在拥有的代码:

Sub Download_Outlook_Mail_To_Excel()
'Add Tools->References->"Microsoft Outlook nn.n Object Library"
'nn.n varies as per our Outlook Installation
Dim folders As Outlook.folders
Dim folder As Outlook.MAPIFolder
Dim iRow As Integer
Dim Pst_Folder_Name
Dim MailboxName



'Mailbox or PST Main Folder Name (As how it is displayed in your Outlook Session)
MailboxName = "My email address"

'Mailbox Folder or PST Folder Name (As how it is displayed in your Outlook Session)
Pst_Folder_Name = "Inbox"

Set folder = Outlook.Session.folders(MailboxName).folders(Pst_Folder_Name)
If folder = "" Then
    MsgBox "Invalid Data in Input"
    GoTo end_lbl1:
End If

'Rad Through each Mail and export the details to Excel for Email Archival
Sheets(1).Activate

For iRow = 1 To folder.Items.Count
    Sheets(1).Cells(iRow, 1).Select
    Sheets(1).Cells(iRow, 1) = folder.Items.Item(iRow).SenderName
    Sheets(1).Cells(iRow, 2) = folder.Items.Item(iRow).Subject
    Sheets(1).Cells(iRow, 3) = folder.Items.Item(iRow).ReceivedTime
    Sheets(1).Cells(iRow, 4) = folder.Items.Item(iRow).Size
    Sheets(1).Cells(iRow, 5) = folder.Items.Item(iRow).SenderEmailAddress
    'Sheets(1).Cells(iRow, 6) = Folder.Items.Item(iRow).Body
Next iRow
MsgBox "Outlook Mails Extracted to Excel"

end_lbl1:

End Sub

如何确保它从子文件夹而不是主文件夹接收电子邮件?

【问题讨论】:

  • 在这里获得帮助的最佳方式是先尝试一下。如果您遇到困难,请进行一些研究,尝试自己解决问题,然后再询问有关您尝试的具体问题,展示您尝试过的内容。在没有展示研究成果的情况下要求完整解决方案的问题通常会被否决并关闭。
  • @Jean-FrançoisCorbett 感谢您的澄清。我对此很陌生,只是对我令人尴尬的尝试没有成功感到沮丧。感谢您花时间向我说明这一点,我现在看到我的问题似乎是我希望有人为我做这项工作,而不是自己尝试。

标签: vba email excel outlook


【解决方案1】:

尝试使用以下代码:

'Mailbox or PST Main Folder Name (As how it is displayed in your Outlook Session)
MailboxName = "My email address"

'Mailbox Folder or PST Folder Name (As how it is displayed in your Outlook Session)
Pst_Folder_Name = "Inbox"

' subfolder name
Dim subFolderName As String
subFolderName = "Info"

Set folder = Outlook.Session.folders(MailboxName).folders(Pst_Folder_Name).Folders(subFoldersName)
If folder = "" Then
   MsgBox "Invalid Data in Input"
   GoTo end_lbl1:
End If

您也可以考虑使用命名空间类的GetDefaultFolder 方法来获取一个Folder 对象,该对象代表当前配置文件所请求类型的默认文件夹。

【讨论】:

  • 非常感谢!现在我看到它似乎有点简单 - 我尝试枚举文件夹和对我来说没有多大意义的东西,所以感谢您的帮助。我为此发疯了。
  • 能否根据情况从outlook中获取特定日期的邮件日志列表