发现下面的代码和我试图得到我的Outlook收件箱中的电子邮件地址到Excel,但在行设置objfolder错误
Sub getemail()
Dim objFolder As MAPIFolder
Dim strEmail As String
Dim objItem As Object
Dim counter As Integer
counter = 2
Set objFolder = Application.GetNamespace("Mapi").GetDefaultFolder(olFolderInbox)
For Each objItem In objFolder.Items
If objItem.Class = olMail And objItem.ReceivedTime >= DateAdd("yyyy", -1, Now) Then
strEmail = objItem.SenderEmailAddress
Cells(counter, 1).Value = strEmail
counter = counter + 1
End If
Next
End Sub
3条答案
按热度按时间ql3eal8s1#
首先,不要遍历文件夹中的所有项目-文件夹可以包含数千条消息,使用
Items.Find/FindNext
或Items.Restrict
。其次,收件箱文件夹可以包含
MailItem
以外的项目,如ReportItem
或MeetingItem
,它们不暴露SenderEmailAddress
属性。检查Class
属性(由所有OOM对象暴露),您确实有一个MailItem
对象。最后,
Application
内部变量指向Excel VBA中的Excel.Application
对象。除非在Outlook VBA中运行代码,否则需要显式创建Outlook.Application
对象的示例。hmae6n7t2#
我不确定这是否与晚绑定/早绑定问题有关。但您可以尝试将“olderinbox”更改为6。
如果要使用早期绑定,请确保在引用中启用了Microsoft Outlook XX.X对象库。
我通常会使用后期绑定,它会简单得多,您不必处理引用库版本问题。当与其他使用不同Excel版本的同事或朋友共享子例程时
sg2wtvxw3#
by @Dmitry确保将Outlook添加为项目首选项