Почта Outlook не работает в VBA - PullRequest
       6

Почта Outlook не работает в VBA

1 голос
/ 10 октября 2019

Я пытаюсь получить электронную почту из Outlook, чтобы вставить ее содержимое в Excel. Я хочу выполнить фильтрацию (по теме) и выбрать последние полученные, которые соответствуют моему условию.

Проблема в том, что, когда я пытаюсь получить элемент (1) папки, она начинается где-тов середине всех писем.

Я попробовал этот код (просто как эксперимент):

    For n = 1 To eFolder.Items.Count
        Set objMail = eFolder.Items(n)
        subj = objMail.Subject
        MsgBox (n)
        MsgBox (subj)
        MsgBox (objMail.ReceivedTime)

    Next

И результат следующий:

  • n переходит от 1 к общему количеству писем (54 в моем случае)
  • однако при проверке времени, когда они были получены, порядок соответствует: 34,35, ..., 54,33, 43, ..., 1

Любая идея о том, почему это происходит?

Я пытался использовать .Items.GetLast, и это работает, но я не знаю, как могЯ иду один за другим, проверяя, соответствует ли оно следующему условию, которое я хочу применить.

Большое спасибо

Ответы [ 2 ]

0 голосов
/ 10 октября 2019

Порядок, в котором электронные письма перечислены в пользовательском интерфейсе в Outlook, не соответствует порядку в коллекции Items. Свойства Explorer.CurrentView или Folder.CurrentView возвращают объект, представляющий текущее представление.

Объект View позволяет создавать настраиваемые представления, которые позволяют лучше сортировать, группировать и в конечном итоге просматривать данные всех типов. Существует множество различных типов представлений, которые обеспечивают гибкость, необходимую для создания и обслуживания ваших важных данных.

  • Тип табличного представления (olTableView) позволяет просматривать данные в простом поле. на основе таблицы.

  • Тип представления «Календарь» (olCalendarView) позволяет просматривать данные в формате календаря.

  • Тип представления карты (olCardView) позволяет просматривать данные в серии карточек. Каждая карта отображает информацию, содержащуюся в элементе, и может быть отсортирована.

  • Тип представления значков (olIconView) позволяет просматривать данные в виде значков, аналогично папке или проводнику Windows.

  • Тип представления временной шкалы (olTimelineView) позволяет просматривать данные по мере их получения в настраиваемой линейной временной шкале.

Виды определены и настроеныиспользуя свойство XML объекта View. Свойство XML позволяет создавать и устанавливать настраиваемую схему XML, которая определяет различные функции представления.

Использование Views (индекс), где индекс - это имя объекта View или его порядковый номер. значение, чтобы вернуть один View объект.

Однако вы также можете сортировать элементы в коллекции. Метод Items.Sort сортирует коллекцию элементов по указанному свойству.

0 голосов
/ 10 октября 2019

Сортировка по ReceivedTime, а затем цикл по ним. Вы можете прочитать о Items.Sort метод (Outlook)

Вот пример

Option Explicit

Sub Sample()
    Dim myNameSpace As Outlook.NameSpace
    Dim myFolder As Outlook.Folder
    Dim myItem As Outlook.MailItem
    Dim myItems As Outlook.Items

    Set myNameSpace = Application.GetNamespace("MAPI")
    Set myFolder = myNameSpace.GetDefaultFolder(olFolderInbox)
    Set myItems = myFolder.Items

    myItems.Sort "[ReceivedTime]", True

    For Each myItem In myItems
        Debug.Print myItem.Subject & "-- " & myItem.ReceivedTime
    Next myItem
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...