创建一个`Items`集合,其中包含对已存在的`Item`s的引用

时间:2015-03-16 06:59:17

标签: vba outlook items

我的意思是创建一个Items集合,并将几个已存在的Item添加到其中。 例如,如果我有两个对MailItem的引用,我想设置一个包含这两个Items的{​​{1}}集合。

这就像是

Item

怎么办呢?

需要澄清的是:

  1. 如何设置新系列。
  2. 如何添加商品。 Documentation on Items.Add似乎表明它用于添加新创建的对象,而不是对现有Items的引用。
  3. 我稍后会遍历该集合,例如。我也会申请' ... ' Code that assigns references to olMail1 and olMail2, of type Outlook.MailItem ' ... Dim MyItems As Outlook.Items ' Assign with Set / create the object MyItems.Add olMail1 MyItems.Add olMail2 ' Code that can use MyItems(1) to get a reference to olMail1 Find;这允许将方法应用于比整个Restrict小得多的集合。

    PS:我甚至无法获得Folder收藏 Items(即,无需创建集合并逐个添加Application.ActiveExplorer.Selection)。这对初学者来说会很好。


    背景

    我的意思是找到Item的发件人匹配给定字符串的内容。可能使我的案例比“基本案例”更复杂的方面是:

    1. 我的意思是仅对选定的一组项目应用过滤器。例如,仅在收件箱索引中选择的Item上。
    2. 我想做部分匹配。此时我不需要正则表达式,甚至不需要充分使用通配符*?。但至少部分匹配,如Item
    3. 我的意思是为最小单位设置一个特定的InStr:针对单个条件测试一个Function。然后遍历所有目标Item和所有条件。
    4. 我设想了3个方法

      1. 使用Item
      2. 使用RulesFilter。这些不接受通配符(原则上?)。
      3. “手动”检查条件,Restrict,例如
      4. 上面的每个方面可能会对一个或多个方法带来一些复杂性。

        此时,我正在探索方法2.我有一个InStr的引用,我找到了如何应用具有匹配条件的Item(请参阅 http://www.outlookcode.com/news.aspx?id=30http://blogs.msdn.com/b/andrewdelin/archive/2005/05/11/416312.aspx,以及VBA Search in Outlook的未接受答案。但是要应用Filter,我需要一个Filter集合,其中包含我的单个项目。

        我有一些方法可以使用方法3(如VBA Search in Outlook的公认答案中所述)。

        相关链接

        Identify MailItems satisfying a Rule

2 个答案:

答案 0 :(得分:0)

您可以使用常规集合:

Dim myItems As Collection
Set myItems = New Collection
myItems.Add olMail1
myItems.Add olMail2

现在,如果您希望限制对象类型而不是myItems所包含的对象类型,那么它会变得有点复杂,但这是一种方法:

Restrict type in a Collection inside a class module

答案 1 :(得分:0)

我建议从MSDN中的Getting Started with VBA in Outlook 2010文章开始。

无法在代码中创建Items类的实例。它是asociated并属于任何文件夹。您可以创建一个文件夹来获取新的Items实例。

您可以使用Outlook项目的Copy方法创建该对象的另一个实例。然后可以使用Move方法将项​​目移动到另一个Items集合(文件夹)。

  

1.我的意思是仅对选定的一组项目应用过滤器。例如,仅在收件箱索引中选择的项目。

您需要迭代所有选定的项目。 Find / FindNext和Restrict方法仅属于Items类。因此,您只能将它们应用于文件夹项目。

  

2.我想做部分匹配。此时我不需要正则表达式,甚至不需要充分使用通配符*?。但至少部分匹配,如InStr。

Filtering Items Using a String Comparison。您可以使用 ci_startswith ci_phrasematch 运算符。

  

3.我的意思是为最小单位设置一个特定的功能:测试一个项目,对于一个条件。然后循环遍历所有目标项和所有条件。

查看MSDN中的Filtering Items部分,该部分介绍了在Outlook中各种对象支持的过滤器中指定属性的一般规则。

View类的Filter方法仅应用于Outlook视图。 Items属性将返回完整的项目列表。

如果你指定最终目标会更好,而不是解决问题的可行方法,这对我们来说是不明确的。