Поля Outlook и эквивалентные свойства - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть макрос, чтобы получить в 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

1 Ответ

0 голосов
/ 30 сентября 2019

Вы можете использовать UserProperties MailItem.

Например, 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
...