vba - 将信息从 Outlook 提取到 Excel
问题描述
我有下面的代码,它为我提供了发件人行、主题行和日期信息,但是有没有办法也可以从收件人行(姓名和电子邮件地址)获取信息。
Sub GetFromOutlook()
Dim OutlookApp As Outlook.Application
Dim OutlookNamespace As Namespace
Dim Folder As MAPIFolder
Dim OutlookMail As Variant
Dim I As Integer
Set OutlookApp = New Outlook.Application
Set OutlookNamespace = OutlookApp.GetNamespace("MAPI")
Set Folder = OutlookNamespace.GetDefaultFolder(olFolderInbox).Folders("Mail").Folders("Test")
I = 1
For Each OutlookMail In Folder.Items
If OutlookMail.ReceivedTime >= Range("From_date").Value Then
Range("eMail_subject").Offset(I, 0).Value = OutlookMail.Subject
Range("eMail_date").Offset(I, 0).Value = OutlookMail.ReceivedTime
Range("eMail_sender").Offset(I, 0).Value = OutlookMail.SenderName
Range("eMail_text").Offset(I, 0).Value = OutlookMail.Body
I = I + 1
End If
Next OutlookMail
Set Folder = Nothing
Set OutlookNamespace = Nothing
Set OutlookApp = Nothing
End Sub
解决方案
遍历 MailItem.Recipients 集合中的所有收件人。如果您只需要收件人,请检查 Recipient.Type 属性 - 它可以是 olTo、olCC、olBCC
for each recip in OutlookMail .Recipients
if recip.Type = olTo Then
MsgBox recip.Name & ": " & recip.Address
End If
next
作为旁注,条件 If OutlookMail.ReceivedTime >= Range("From_date").Value
永远不会满足 - 您不能对日期时间值使用相等比较,您只能使用一个范围:(value < const1) and (value > const2)
推荐阅读
- angular - Angular 8 是否需要在所有使用特定选择器的地方包含所有输入和输出属性?
- bash - 如何在 terraform 模块创建的多个 VMWare 虚拟机上运行 shell 脚本?
- javascript - React - 在 DOM 中多次使用完全相同的组件实例
- sql - 我在尝试创建 SQL 存储过程时收到此错误
- css - 使用 css 将两个图像淡化为背景图像
- loops - 我想我已经为自己复杂化了
- python - 从动态检查按钮中获取价值?
- c# - 基本 HttpServer | 如何正确从 NetworkStream 读取数据
- javascript - 扩展没有装饰器的类
- c++ - 有没有更有效的方法来包装浮点数?