Excel VBA и Outlook: код работает на моей почтовой учетной записи, но не на моей учетной записи коллег - PullRequest
0 голосов
/ 08 февраля 2019

У меня возникли проблемы с моим кодом Excel VBA.Каждый день я (и коллеги) получаю почту в одном и том же формате.Я хочу импортировать время / дату письма и тему, ЕСЛИ почта отвечает следующим требованиям: * Тема содержит «Заказ» * Время получения> = (На основе диапазона) * Время получения <= (На основе диапазона) * ОпределенныйИмя отправителя (в зависимости от диапазона) </p>

Код отлично работает, когда я использую свою учетную запись Outlook.Однако, когда коллега пытается запустить его, условие конкретного имени отправителя выдает ошибку 438 «Объект не поддерживает это свойство или метод».

Когда я снимаю условие с именем конкретного отправителя, код работает для моей коллеги.Имя отправителя в моей учетной записи коллеги точно такое же, как и в моей учетной записи Outlook.(Очевидно, что strMailboxName и папки были изменены на имена, которые мой коллега использует в Outlook, прежде чем пытаться запустить код)

Примечание: у моего коллеги есть встречи календаря в папке, которых у меня нет (но они не отправляются SenderName).Кроме того, мой коллега получает письма о других предметах от SenderName.

Sub Outlook()
Dim OutlookApp As Outlook.Application
Dim OutlookNamespace As Namespace
Dim Folder As MAPIFolder
Dim OutlookMail As Variant
Dim strMailboxName As String
Dim i As Integer

strMailboxName = "OutlookName" 'Name of mailaccount
Set OutlookApp = New Outlook.Application
Set OutlookNamespace = OutlookApp.GetNameSpace("MAPI")
Set Folder = Session.Folders(strMailboxName)
Set Folder = Folder.Folders("FolderName") 'Name of folder


i = 1


For Each OutlookMail In Folder.Items
If InStr(OutlookMail.Subject, "Order") > 0 And   OutlookMail.ReceivedTime >= Range("start_date").Value And OutlookMail.ReceivedTime <= Range("end_date") And OutlookMail.Sender = Range("Sender") Then

Range("Date_and_time").Offset(i, 0).Value = OutlookMail.ReceivedTime
Range("Date_and_time").Offset(i, 0).VerticalAlignment = xlTop
Range("Subject").Offset(i, 0).Value = OutlookMail.Subject
Range("Subject").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 голосов
/ 08 февраля 2019

Во-первых, вы никогда не должны проходить циклом по всем элементам в папке - используйте Items.Find/FindNext или Items.Restrict.

Во-вторых, вы можете иметь элементы, отличные от MailItem впапка - вы также можете иметь ReportItem (для отчетов о недоставке) и MeetingItem (для приглашений / обновлений).Сначала убедитесь, что OutlookMail.Class property = 43 (olMailItem).

...