使用Excel基于变量(Excel中的值/命名范围)进入Outlook中指定文件夹的宏,并从指定文件夹中的电子邮件中提取数据(To :字段,主题,..等)。使用Excel VBA从Outlook文件夹中提取电子邮件数据
除了电子邮件的“主题”和“大小”数据之外,除了无法提取任何内容的部分外,代码的工作原理都很好。例如,如果我尝试使用与“主题”或“大小”编码相同的方法提取“To”数据,则会出现“运行时错误'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
任何帮助将不胜感激,或者如果任何人都可以在正确的方向指向我修改代码,以便能够提取其他电子邮件字段,如From
和To
字段。
另外,如果我的Set olFolder
值是在ex中的命名范围cel会随着日期而动态变化(=Today()
),并使用Folder_Location
作为Excel中的命名范围,是否可以正确写入;
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")
在Excel - >这使示数上我,当我试图再次将其olFolder
,谢谢