我用VBA从特定的Outlook文件夹中提取项目来收集Outlook项目。在下面的代码中,我将两个不同文件夹中的项目收集到两个不同的数组中。(代码是用Excel编写的)
Set olGetArchMeetings = olNS.Folders(2).Folders(4).Items
olGetArchMeetings.IncludeRecurrences = True
olGetArchMeetings.Sort "[Start]"
strRestrictionArch = "[Start] >= '" & mStart & "' AND [End] <= '" & mEnd & "'"
Set objArray1 = olGetArchMeetings.restrict(strRestrictionArch)
Set olGetMeetings = olNS.GetDefaultFolder(9).Items
olGetMeetings.IncludeRecurrences = True
olGetMeetings.Sort "[Start]"
strRestriction = "[Start] >= '" & mStart & "' AND [End] <= '" & mEnd & "'"
Set objArray2 = olGetMeetings.restrict(strRestriction)
问题是:有没有办法把两个对象数组合并成一个?比如把objArray2中的所有元素都加到objArray1的末尾,然后创建一个包含两个数组中的元素的新数组?
我试着通过基本的数组连接来合并,就像合并字符串数组一样,但没有帮助。
我希望得到一个大型的元素数组,其中包含来自不同数组的元素
2条答案
按热度按时间yv5phkfx1#
我不知道如何为outlook编写代码,但基本的数组合并应该是这样的,这只是一维数组的代码:
nlejzf6q2#
首先,
Items
类的Restrict
方法对Items
集合应用一个筛选器,返回一个新集合,其中包含原始集合中与筛选器匹配的所有项,但不包含数组。问题是:有没有办法把两个对象数组合并成一个?比如把objArray2中的所有元素都加到objArray1的末尾,然后创建一个包含两个数组中的元素的新数组?
不,从不同的
Restrict
调用中获取单个Items
集合的方法并不简单。您可以考虑构建一个从找到的项目中提取的数据数组。但更好的方法是使用单个搜索,该搜索可以在Outlook的后台运行。Application.AdvancedSearch方法允许基于指定的DAV搜索和定位(DASL)搜索字符串在多个文件夹中执行搜索。若要指定多个文件夹路径,请将每个文件夹路径用单引号括起来,并用逗号分隔用单引号括起来的文件夹路径。
在Outlook中使用
AdvancedSearch
方法的主要优点是:AdvancedSearch
方法会在后台自动运行它。Restrict
和Find
/FindNext
方法可应用于特定的Items
集合(请参阅Outlook中Folder
类的Items
属性)。Store
类的IsInstantSearchEnabled
属性)。在我为技术博客撰写的文章中可以阅读更多相关内容:Advanced search in Outlook programmatically: C#, VB.NET.