【问题标题】:Outlook Fields and Equivalent PropertiesOutlook 字段和等效属性
【发布时间】:2019-10-08 14:25:26
【问题描述】:

我有一个宏可以将共享邮箱中的所有电子邮件都输入到 Excel 中 在我的共享收件箱中,我创建了 2 个新字段,我们在其中输入了与收到的电子邮件相关的一些信息。我将它们命名为 Client 和 Oper。

你能帮我提个建议吗?如何查看字段属性以便在 VBA 中获取它?

宏如下所示:

Option Explicit
Sub getDataFromOutlook()
Dim OutlookApp As Outlook.Application
Dim OutlookNamespace As Namespace
Dim Folder As MAPIFolder
Dim OutlookMail As Variant
Dim objOwner As Outlook.Recipient
Dim i As Integer
Set OutlookApp = New Outlook.Application
Set OutlookNamespace = OutlookApp.GetNamespace("MAPI")
Set objOwner = OutlookNamespace.CreateRecipient("Sharedmailbox@companyname.com")
objOwner.Resolve
If objOwner.Resolved Then
Set Folder = OutlookNamespace.GetSharedDefaultFolder(objOwner, olFolderInbox)
End If
i = 1
For Each OutlookMail In Folder.Items
If OutlookMail.ReceivedTime >= Range("email_receipt_date").Value Then
Range("email_sender").Offset(i, 0) = OutlookMail.SenderName
        Range("email_sender").Offset(i, 0).Columns.AutoFit
        Range("email_sender").Offset(i, 0).VerticalAlignment = xlTop
        Range("email_subject").Offset(i, 0) = OutlookMail.Subject
        Range("email_subject").Offset(i, 0).Columns.AutoFit
        Range("email_subject").Offset(i, 0).VerticalAlignment = xlTop
      'Range("email_client").Offset(i, 0) = OutlookMail.Client
      'Range("email_client").Offset(i, 0).Columns.AutoFit
        'Range("email_client").Offset(i, 0).VerticalAlignment = xlTop
        'Range("email_oper").Offset(i, 0) = OutlookMail.Oper
        'Range("email_oper").Offset(i, 0).Columns.AutoFit
        'Range("email_oper").Offset(i, 0).VerticalAlignment = xlTop
        Range("email_date").Offset(i, 0) = OutlookMail.ReceivedTime
        Range("email_date").Offset(i, 0).Columns.AutoFit
        Range("email_date").Offset(i, 0).VerticalAlignment = xlTop
        Range("email_categories").Offset(i, 0) = OutlookMail.Categories
        Range("email_categories").Offset(i, 0).Columns.AutoFit
        Range("email_categories").Offset(i, 0).VerticalAlignment = xlTop
        Range("email_flag_status").Offset(i, 0) = OutlookMail.FlagStatus
        Range("email_flag_status").Offset(i, 0).Columns.AutoFit
        Range("email_flag_status").Offset(i, 0).VerticalAlignment = xlTop
 i = i + 1
    End If
Next OutlookMail
Set Folder = Nothing
Set OutlookNamespace = Nothing
Set OutlookApp = Nothing
End Sub

【问题讨论】:

  • 也许是 OutlookMail.UserProperties("FieldName") .Value?有几种不同的方法可以实现新字段。有些是计算视图列,有些是表单。这些新领域在哪里?
  • 在共享邮箱中添加了这些列,方法是按照以下菜单创建它们:查看选项卡->查看设置->列->新列。列的类型是文本
  • 那么是的,我发布的内容将起作用。进一步的研究表明该字段未填充时会出现问题,因此建议在尝试复制之前使用 Find 方法确保填充该值,否则将引发错误。有关更多详细信息,请参阅此答案。如果您需要更多帮助,我可以模拟一个示例。 stackoverflow.com/questions/8551655/…

标签: excel vba email outlook


【解决方案1】:

您可以使用 MailItem 的UserProperties

例如OutlookMail.UserProperties("Oper").Value 将返回您创建的属性字段的值。

请注意,如果该字段未填充,则会导致错误,因此建议事先使用 Find 进行 IF 检查,以确保不会引发异常。

If Not(OutlookMail.UserProperties.Find("Oper", True) Is Nothing) Then
    'Do stuff with OutlookMail.UserProperties("Oper").Value
End If

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-16
    • 2013-12-29
    • 1970-01-01
    • 2019-01-26
    • 1970-01-01
    • 2015-01-04
    • 2012-01-12
    • 1970-01-01
    相关资源
    最近更新 更多