从Outlook文件夹中提取电子邮件数据

问题描述 投票:1回答:1

使用Excel宏进入Outlook中的指定文件夹,并基于变量(Excel中的值/命名范围)从电子邮件(收件人,主题等)中提取数据。

我无法提取电子邮件中“主题”和“大小”数据之外的任何内容。

[例如,如果我尝试使用与“主题”或“大小”编码相同的方法提取“收件人”数据,那么它就会出现]]

“运行时错误'438':对象不支持此属性或方法错误。

Sub FetchEmailData()

Dim appOutlook As Object
Dim olNs As Object
Dim olFolder As Object
Dim olItem As Object
Dim iRow As Integer

'Get/create Outlook Application
On Error Resume Next
Set appOutlook = GetObject(, "Outlook.Application")
If appOutlook Is Nothing Then
    Set appOutlook = CreateObject("Outlook.Application")
End If
On Error GoTo 0

Set olNs = appOutlook.GetNamespace("MAPI")
Set olFolder = olNs.Folders("Mailbox_name").Folders("Inbox").Folders("XYZ").Folders("2017").Folders("04. April").Folders("Etc")

'Clear
ThisWorkbook.Sheets("Test").Cells.Delete

'Build headings:
ThisWorkbook.Sheets("Test").Range("A1:D1") = Array("Sender_Email_Address", "Subject", "To", "Size")

For iRow = 1 To olFolder.Items.Count
    ThisWorkbook.Sheets("Test").Cells(iRow, 1).Select
    'ThisWorkbook.Sheets("Test").Cells(iRow, 1) = olFolder.Items.Item(iRow).SenderEmailAddress
    ThisWorkbook.Sheets("Test").Cells(iRow, 2) = olFolder.Items.Item(iRow).Subject
    'ThisWorkbook.Sheets("Test").Cells(iRow, 3) = olFolder.Items.Item(iRow).To
    ThisWorkbook.Sheets("Test").Cells(iRow, 4) = olFolder.Items.Item(iRow).Size
Next iRow

End Sub

如何提取电子邮件字段,例如“发件人”和“收件人”?

此外,如果我的Set olFolder值是Excel中的一个命名范围,并且该日期范围随日期(=Today())动态变化,并且在Excel中使用Folder_Location作为命名范围,那么书写是否正确;

Set olFolder = ThisWorkbook.Sheets("Setup").Range("Folder_Location")

哪里

Folder_Location = olNs.Folders("Mailbox_name").Folders("Inbox").Folders("XYZ").Folders("2017").Folders("04. April").Folders("Etc")     

[当我尝试将其链接到olFolder时,这总是出错。

使用Excel宏进入Outlook中的指定文件夹,并基于变量(Excel中的值/命名范围)从电子邮件(收件人,主题等)中提取数据。我无法提取...

excel vba email outlook extract
1个回答
0
投票

我知道这是一个老问题,但是最近我遇到了同样的问题,经过您已经做的事之后才能够解决。

© www.soinside.com 2019 - 2024. All rights reserved.