VBA Outlook脚本错误:找不到对象

VBA Outlook脚本错误:找不到对象,vba,excel,outlook,Vba,Excel,Outlook,我正在尝试使用VBA脚本将收件箱中的电子邮件中的信息拉入excel电子表格: 'Subject 'To Address 'From Address 'CC Addresses 对于已离开组织且不再在O365中的发件人,此操作将失败 这是代码位: Function X400toSMTP(strAdr As String) As String Dim olkRcp As Outlook.Recipient, olkUsr As Outlook.ExchangeUser Set olkRcp = S

我正在尝试使用VBA脚本将收件箱中的电子邮件中的信息拉入excel电子表格:

'Subject
'To Address
'From Address
'CC Addresses
对于已离开组织且不再在O365中的发件人,此操作将失败

这是代码位:

Function X400toSMTP(strAdr As String) As String
Dim olkRcp As Outlook.Recipient, olkUsr As Outlook.ExchangeUser
Set olkRcp = Session.CreateRecipient(strAdr)

If olkRcp.AddressEntry = Empty Then
    X400toSMTP = strAdr

ElseIf olkRcp.AddressEntry.AddressEntryUserType = olExchangeUserAddressEntry Then
    olkRcp.Resolve
    Set olkUsr = olkRcp.AddressEntry.GetExchangeUser
    X400toSMTP = olkUsr.PrimarySmtpAddress
End If

Set olkRcp = Nothing
Set olkUsr = Nothing
End Function
我运行了调试,它在
AddressEntry
处停止:
尝试的操作失败。找不到对象
我正试图找到一种方法,使脚本为那些在O365上找不到的发件人保留地址字段为空,并进一步处理收件箱中的其余项目

我尝试了以下方法:

If IsNull(olkRcp.AddressEntry) Then
    X400toSMTP = strAdr
但是我仍然会收到AddressEntry的相同错误

我只是一个VBA noob,所以非常感谢你的建议


非常感谢

在访问AddressEntry属性之前,请确保收件人已解析-调用olkRcp.Resolve。

如果olkRcp.AddressEntry为空,则可以编写
,如果olkRcp.AddressEntry为空,则可以编写
,如果olkRcp.AddressEntry=“”,则可以编写
,非常感谢,Patrick!我已经试过了,但它仍然给我错误。也许值得一提的是,我正在一个共享邮箱上运行这个。我在收件箱中的一个子文件夹上尝试了这个脚本,但它并没有停在离开者地址,而是停在我知道它有效的某个通讯组列表上。我还尝试启用“下载共享文件夹”,但仍然无法用于共享邮箱。我确实尝试过,Dmitry。但是仍然会得到相同的错误哪种方法会引发错误?决定这意味着无法解析名称。如果在Outlook中键入“收件人”框并按Ctrl+K组合键,是否可以解决此问题?它会以某种方式超出解决范围。如果olkRcp.AddressEntry为空,则函数X400toSMTP(strAdr为字符串)作为字符串Dim olkRcp作为Outlook.Recipient,olkUsr作为Outlook.ExchangeUser Set olkRcp=Session.CreateRecipient(strAdr)停止olkRcp.Resolve如果olkRcp.AddressEntry为Nothing,则X400toSMTP=strAdr ElseIf olkRcp.AddressEntry.AddressEntryUserType=olExchangeUserAddressEntry,然后设置olkUsr=olkRcp.AddressEntry.GetExchangeUser X400toSMTP=olkUsr.PrimarySmtpAddress End如果设置olkRcp=NothingSet olkUsr=Nothing End Function我使用错误处理使其工作:函数X400toSMTP(strAdr作为字符串)作为字符串Dim olkRcp作为Outlook.Recipient,olkUsr作为Outlook.ExchangeUser Set olkRcp=Session.CreateRecipient(strAdr)错误时继续下一步如果olkRcp.AddressEntry.AddressEntryUserType=olExchangeUserAddressEntry,则olkRcp.Resolve Set-olkUsr=olkRcp.AddressEntry.GetExchangeUser X400toSMTP=olkUsr.PrimarySmtAddress End如果Set-olkRcp=Nothing设置olkUsr=Nothing,则返回0 End函数