引用Outlook的Excel VBA代码导致';287';Office 2016中的运行时错误

引用Outlook的Excel VBA代码导致';287';Office 2016中的运行时错误,excel,vba,outlook,Excel,Vba,Outlook,我有一个引用Outlook对象的Excel VBA脚本。这通常在以前的Office版本中运行 2016年,我将获得: 运行时错误“287”: 应用程序定义或对象定义错误 以下是我的部分代码: Dim olApp As Outlook.Application Dim olNS As Outlook.Namespace Dim Rec As Outlook.Recipient Dim olGAL As Outlook.AddressList Set olApp = Outlook.Appli

我有一个引用Outlook对象的Excel VBA脚本。这通常在以前的Office版本中运行

2016年,我将获得:

运行时错误“287”:
应用程序定义或对象定义错误

以下是我的部分代码:

Dim olApp As Outlook.Application

Dim olNS As Outlook.Namespace

Dim Rec As Outlook.Recipient

Dim olGAL As Outlook.AddressList

Set olApp = Outlook.Application

Set olNS = olApp.GetNamespace("MAPI")

Set olGAL = olNS.GetGlobalAddressList

Set Rec = olNS.CreateRecipient(Cells(1, 1))

Rec.Resolve
单元格(1,1)包含有效的电子邮件地址

“287”错误出现在
Rec.Resolve

我已签入工具/引用中的Microsoft Office 16.0对象库


我在Outlook中的“编程访问”下检查了信任中心设置。可疑活动处理有三个单选按钮可供选择,均未选中。我的防病毒状态设置为有效。

为了确保您处理的是有效的字符串(不是空的),我建议声明一个字符串变量:

Dim recipient as String 

Set recipient = Cells(1, 1)

MsgBox recipient

Set Rec = olNS.CreateRecipient(recipient)

Rec.Resolve

办公室或Outlook PIA中没有任何更改。您只需要根据系统上使用的Outlook版本替换Outlook COM引用。方法保持不变。

为了确保处理的是有效的字符串(不是空的),我建议声明一个字符串变量:

Dim recipient as String 

Set recipient = Cells(1, 1)

MsgBox recipient

Set Rec = olNS.CreateRecipient(recipient)

Rec.Resolve

办公室或Outlook PIA中没有任何更改。您只需要根据系统上使用的Outlook版本替换Outlook COM引用。方法保持不变。

您从不初始化
olApp
变量。 更换线路

Set olApp = Outlook.Application


您从不初始化
olApp
变量。 更换线路

Set olApp = Outlook.Application


谢谢你的建议。我尝试了您的代码(并将Set recipient=更改为recipient=),但仍然看到相同的错误。我还注意到,当我键入.Resolve时,它会在编辑器中更改为.Resolve。我已将Microsoft Office 16.0对象库签入工具/参考。谢谢您的建议。我尝试了您的代码(并将Set recipient=更改为recipient=),但仍然看到相同的错误。我还注意到,当我键入.Resolve时,它会在编辑器中更改为.Resolve。我已在Tools/References.Hi中签入Microsoft Office 16.0对象库。谢谢你的回复。我做了更改,但仍然得到287错误。在我试图理解Outlook对象结构的过程中,我已经看到了相当多的错误,因此我认为我缺少了一些基本的东西。只是还不确定那是什么。。嗯……在这个例子中,“Rec.Resolve”中出现了“287”错误。作为测试,您能尝试将硬编码字符串传递给CreateRecipient吗?谢谢。我尝试了一个硬编码字符串,但它仍然给出了287错误。一些人认为这是一个安全问题。我在Outlook中的“编程访问”下检查了信任中心设置。可疑活动处理有三个单选按钮可供选择,均未选中。我的防病毒状态设置为Valid.Hi。谢谢你的回复。我做了更改,但仍然得到287错误。在我试图理解Outlook对象结构的过程中,我已经看到了相当多的错误,因此我认为我缺少了一些基本的东西。只是还不确定那是什么。。嗯……在这个例子中,“Rec.Resolve”中出现了“287”错误。作为测试,您能尝试将硬编码字符串传递给CreateRecipient吗?谢谢。我尝试了一个硬编码字符串,但它仍然给出了287错误。一些人认为这是一个安全问题。我在Outlook中的“编程访问”下检查了信任中心设置。可疑活动处理有三个单选按钮可供选择,均未选中。我的防病毒状态设置为有效。