Excel VBA和Outlook:代码可在我的mailaccount上运行,但不适用于我的同事帐户

时间:2019-02-08 16:45:49

标签: excel vba outlook

我的excel vba代码遇到了一些麻烦。 每天,我(和同事)都会收到一封格式相同的邮件。 我想导入邮件的时间/日期和主题,如果邮件满足以下要求: *主题包含“订单” *接收时间> =(基于范围) *接收时间<=(基于范围) *特定发件人名称(基于范围)

当我使用自己的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 :(得分:1)

首先,永远不要循环浏览文件夹中的所有项-使用Items.Find/FindNextItems.Restrict

第二,文件夹中可以包含MailItem以外的其他项目-您还可以包含ReportItem(用于NDR)和MeetingItem(用于约会邀请/更新)。 请先检查OutlookMail.Class属性= 43(olMailItem)。