После успешного создания настраиваемого поля в Outlook с помощью формулы и анализа поля «Тема»;Теперь я столкнулся с новым препятствием.Пользовательское поле не сортируется.На текущий момент кажется, что единственный способ достичь этого - создать новое пользовательское свойство , которое затем можно будет сортировать и использовать при определении поля.
Опция также существует длявставьте все в VBA-скрипт или C # -приложение с помощью взаимодействия.В любом случае для меня это сработало бы, однако я бы предпочел пойти по VBA-маршруту и сохранить его самодостаточным.
Сообщения электронной почты существуют в папке и могут быть отправлены по факту;решение не должно оставаться постоянно активным.
Если бы кто-нибудь мог указать мне на код, который может легко достичь этого, это было бы здорово.Если мне не хватает варианта сделать настраиваемое поле сортируемым, укажите его, поскольку это конечная цель.
РЕДАКТИРОВАТЬ:
Это то, что у меня есть в настоящее время...
Sub SortCustomField()
Dim olApp As Outlook.Application
Dim objLotusInbox As Outlook.MAPIFolder
Dim objLotusInboxItems As Outlook.Items
Dim objNameSpace As Outlook.NameSpace
Dim objProperty As Outlook.UserDefinedProperty
Set olApp = CreateObject("Outlook.Application")
Set objNameSpace = olApp.GetNamespace("MAPI")
Set objLotusInbox = objNameSpace.GetDefaultFolder(olFolderInbox).Folders("Lotus Notes Inbox")
Set objLotusInboxItems = objLotusInbox.Items
objLotusInboxItems.Sort "[Notes2Outlook Created]", False
Set objLotusInboxItems = Nothing
Set objLotusInbox = Nothing
Set objNameSpace = Nothing
Set olApp = Nothing
End Sub
Ошибка при сортировке;почти наверняка это связано с тем, что указанное поле является пользовательским полем, так как оно работает с другими полями, такими как From
.
ОБНОВЛЕНИЕ:
Сделанонекоторые основания, однако при возврате в Outlook он не заполняет поле, определенное во время выполнения.
Dim olApp As Outlook.Application
Dim objLotusInbox As Outlook.MAPIFolder
Dim objLotusInboxItems As Outlook.Items
Dim objNameSpace As Outlook.NameSpace
Dim objMailProperty As Outlook.UserProperty
Dim objMailItem As Outlook.MailItem
Dim objParsedDate As Date
Dim sample As Object
Set olApp = CreateObject("Outlook.Application")
Set objNameSpace = olApp.GetNamespace("MAPI")
Set objLotusInbox = objNameSpace.GetDefaultFolder(olFolderInbox).Folders("Lotus Notes Inbox")
Set objLotusInboxItems = objLotusInbox.Items
For Each objMailItem In objLotusInboxItems
Set objMailProperty = objMailItem.UserProperties.Add("MyUserProp", olDateTime)
objParsedDate = CDate(Mid(objMailItem.Subject, (InStr(objMailItem.Subject, "[") + 1), (InStr(objMailItem.Subject, "]") - InStr(objMailItem.Subject, "[")) - 1))
objMailProperty.Value = objParsedDate
Next
Set objLotusInboxItems = Nothing
Set objLotusInbox = Nothing
Set objNameSpace = Nothing
Set olApp = Nothing