Excel 提取电子邮件数据,例如;从「;及;至;
我想进入Outlook中的指定文件夹,并根据变量(Excel中的值/命名范围)从电子邮件(收件人、主题等)中提取数据 我只能提取电子邮件的“主题”和“大小”数据 例如,如果我尝试拉入“to”数据,它会 运行时错误“438”:对象不支持此属性或方法错误Excel 提取电子邮件数据,例如;从「;及;至;,excel,vba,email,outlook,extract,Excel,Vba,Email,Outlook,Extract,我想进入Outlook中的指定文件夹,并根据变量(Excel中的值/命名范围)从电子邮件(收件人、主题等)中提取数据 我只能提取电子邮件的“主题”和“大小”数据 例如,如果我尝试拉入“to”数据,它会 运行时错误“438”:对象不支持此属性或方法错误 Sub-FetchEmailData() 像对象一样看 作为对象的模糊olNs 将文件夹设置为对象 作为对象 Dim iRow作为整数 '获取/创建Outlook应用程序 出错时继续下一步 设置appOutlook=GetObject(,“Outl
Sub-FetchEmailData()
像对象一样看
作为对象的模糊olNs
将文件夹设置为对象
作为对象
Dim iRow作为整数
'获取/创建Outlook应用程序
出错时继续下一步
设置appOutlook=GetObject(,“Outlook.Application”)
如果appOutlook不算什么
设置appOutlook=CreateObject(“Outlook.Application”)
如果结束
错误转到0
Set olNs=appOutlook.GetNamespace(“MAPI”)
设置olFolder=olNs.Folders(“邮箱名称”)。Folders(“收件箱”)。Folders(“XYZ”)。Folders(“2017”)。Folders(“4月4日”)。Folders(“等”)
“清楚
此工作簿.Sheets(“Test”).Cells.Delete
“构建标题:
此工作簿.Sheets(“Test”).Range(“A1:D1”)=数组(“发件人电子邮件地址”、“主题”、“收件人”、“大小”)
对于iRow=1到olFolder.Items.Count
此工作簿.Sheets(“Test”).Cells(iRow,1)。选择
'ThisWorkbook.Sheets(“Test”).Cells(iRow,1)=olFolder.Items.Item(iRow).SenderEmailAddress
此工作簿.Sheets(“Test”).Cells(iRow,2)=olFolder.Items.Item(iRow).Subject
'ThisWorkbook.Sheets(“Test”).Cells(iRow,3)=olFolder.Items.Item(iRow).To
此工作簿.Sheets(“Test”).Cells(iRow,4)=olFolder.Items.Item(iRow).Size
下一步
端接头
如何提取“From”和“To”等字段
此外,如果我的设置文件夹
值是Excel中随日期动态变化的命名范围(=Today()
),并使用文件夹位置
作为Excel中的命名范围,写入是否正确
Set olFolder = ThisWorkbook.Sheets("Setup").Range("Folder_Location")
在哪里
当我尝试将它链接到
olFolder
时,会出现此错误。我知道这是一个老问题,但我最近遇到了相同的问题,在仔细检查了您已经做过的事情后,我能够解决此问题
我只需要做一些更改;首先,为了简单起见,我将所选文件夹设置为收件箱:
Set olFolder = olNs.GetDefaultFolder(6) ' 6 == Inbox for some reason
然后,为了便于阅读,我更改了您制作的标题(不是功能性更改):
最后,为了获得您想要的功能,需要对for循环中“Cells”参数中的标记进行一个小的更改:
For iRow = 1 To olFolder.Items.Count
ThisWorkbook.Sheets("Test").Cells(iRow + 1, 1) = olFolder.Items.Item(iRow).SenderEmailAddress
ThisWorkbook.Sheets("Test").Cells(iRow + 1, 2) = olFolder.Items.Item(iRow).Subject
ThisWorkbook.Sheets("Test").Cells(iRow + 1, 3) = olFolder.Items.Item(iRow).To
ThisWorkbook.Sheets("Test").Cells(iRow + 1, 4) = olFolder.Items.Item(iRow).Size
下一步
其中的“+1”使我们不会覆盖标题。因此最终版本如下所示:
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.GetDefaultFolder(6) ' 6 == Inbox for some reason
' 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, 1) = olFolder.Items.Item(iRow).SenderEmailAddress
ThisWorkbook.Sheets("Test").Cells(iRow + 1, 2) = olFolder.Items.Item(iRow).Subject
ThisWorkbook.Sheets("Test").Cells(iRow + 1, 3) = olFolder.Items.Item(iRow).To
ThisWorkbook.Sheets("Test").Cells(iRow + 1, 4) = olFolder.Items.Item(iRow).Size
Next iRow
End Sub
For iRow = 1 To olFolder.Items.Count
ThisWorkbook.Sheets("Test").Cells(iRow + 1, 1) = olFolder.Items.Item(iRow).SenderEmailAddress
ThisWorkbook.Sheets("Test").Cells(iRow + 1, 2) = olFolder.Items.Item(iRow).Subject
ThisWorkbook.Sheets("Test").Cells(iRow + 1, 3) = olFolder.Items.Item(iRow).To
ThisWorkbook.Sheets("Test").Cells(iRow + 1, 4) = olFolder.Items.Item(iRow).Size
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.GetDefaultFolder(6) ' 6 == Inbox for some reason
' 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, 1) = olFolder.Items.Item(iRow).SenderEmailAddress
ThisWorkbook.Sheets("Test").Cells(iRow + 1, 2) = olFolder.Items.Item(iRow).Subject
ThisWorkbook.Sheets("Test").Cells(iRow + 1, 3) = olFolder.Items.Item(iRow).To
ThisWorkbook.Sheets("Test").Cells(iRow + 1, 4) = olFolder.Items.Item(iRow).Size
Next iRow
End Sub