创建一个Outlook.Items的空集合

时间:2015-05-12 10:19:31

标签: vba collections outlook

我有一个vba宏代码,我可以在其中执行以下操作:

Dim myFoundItems As Outlook.Items
Set myFoundItems = myCalendars.Restrict("[customUserProperty] = '" & sId & "'")

其中customUserProperty是我在我的宏中添加的用户属性(在该限制之后几行)。但是,在第一次运行此宏时,我得到一个属性不存在的错误。所以我正在考虑设置将myFoundItems设置为空集合的错误处理程序。但是我无论如何都无法做到这一点!

我尝试使用下面的代码,但是它会导致另一个错误!

Set myFoundItems = New Collection

也许您知道如何将myFoundItems设置为空集合,甚至更好的方法来检查是否已经创建了UserProperty?

1 个答案:

答案 0 :(得分:0)

您无法使用New关键字创建新的Items实例。相反,您必须使用Folder类的Items属性。

问题的原因是您无法仅使用过滤器查询中的名称来引用用户属性。相反,您必须使用DASL查询,如下一个(VBA):

criteria = "@SQL=" _ 
  & Chr(34) & "http://schemas.microsoft.com/mapi/string/" _ 
  & "{00020329-0000-0000-C000-000000000046}/customUserProperty" & Chr(34) _ 
  & " = 'Microsoft'"

有关详细信息,请参阅Filtering Items Using Query Keywords。您还可以找到Office Developer: How to programmatically restrict or filter “To” property using Outlook Object Model?页面。