我的意思是创建一个Items
集合,并将几个已存在的Item
添加到其中。
例如,如果我有两个对MailItem
的引用,我想设置一个包含这两个Items
的{{1}}集合。
这就像是
Item
怎么办呢?
需要澄清的是:
我稍后会遍历该集合,例如。我也会申请' ...
' 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
的发件人匹配给定字符串的内容。可能使我的案例比“基本案例”更复杂的方面是:
Item
上。Item
。InStr
:针对单个条件测试一个Function
。然后遍历所有目标Item
和所有条件。我设想了3个方法:
Item
。Rules
或Filter
。这些不接受通配符(原则上?)。Restrict
,例如上面的每个方面可能会对一个或多个方法带来一些复杂性。
此时,我正在探索方法2.我有一个InStr
的引用,我找到了如何应用具有匹配条件的Item
(请参阅
http://www.outlookcode.com/news.aspx?id=30,
http://blogs.msdn.com/b/andrewdelin/archive/2005/05/11/416312.aspx,以及VBA Search in Outlook的未接受答案。但是要应用Filter
,我需要一个Filter
集合,其中包含我的单个项目。
我有一些方法可以使用方法3(如VBA Search in Outlook的公认答案中所述)。
相关链接
答案 0 :(得分:0)
您可以使用常规集合:
Dim myItems As Collection
Set myItems = New Collection
myItems.Add olMail1
myItems.Add olMail2
现在,如果您希望限制对象类型而不是myItems
所包含的对象类型,那么它会变得有点复杂,但这是一种方法:
答案 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属性将返回完整的项目列表。
如果你指定最终目标会更好,而不是解决问题的可行方法,这对我们来说是不明确的。