根据Excel中的数据集,使用VBA将Outlook文件夹中的电子邮件移动到子文件夹

时间:2019-08-01 09:30:36

标签: excel vba outlook outlook-vba

我在这里发现了一个类似于我的问题的问题;

How can I move Mails Items from Outlook Inbox with specific subject to specific folder/sub folder?

第一个模块- 此代码的第一部分-我已将所有电子邮件数据成功导出到电子表格。

第二个模块- 我想指示Excel VBA根据我在电子表格中键入的数据集将主文件夹中的电子邮件移动到子文件夹(它不会基于电子邮件本身的过滤器/标准,而只是基于其唯一的主题标题)。 / p>

在(c)列中,是电子邮件的主题(所有主题标题都是特定的/唯一的),在(h)列中,我详细说明了我想在其中使用的子文件夹的名称也感动不幸的是,我在执行创建的代码时遇到错误。

我是Excel VBA的初学者,没有最深刻的了解。我对基于不同来源的代码有所了解,如果它的不正确之处告诉我,将不胜感激

谢谢。

  • i我尝试执行我在用户询问的问题中找到的类似于我的代码,但是没有用
library()

2 个答案:

答案 0 :(得分:1)

在代码中,您将遍历文件夹中的所有项目:

  'Loop through the Items in the folder backwards
     'Setting Mail to counting backwards
    For lngCount = items.Count To 1 Step -1
    'setting object as Email item
        Set item = items.item(lngCount)

这确实不是一个好主意。尤其是如果您稍后使用Find方法。

如果您需要查找与您的条件相对应的项目,建议您使用Items类的Find / FindNextRestrict方法。在以下文章中了解有关这些方法的更多信息:

此外,您可能会发现Application类的AdvancedSearch方法很有帮助。在Outlook中使用AdvancedSearch方法的主要好处是:

  • 搜索是在另一个线程中执行的。您无需手动运行其他线程,因为AdvancedSearch方法会在后台自动运行该线程。
  • 可以在任何位置(即超出某个文件夹的范围)搜索任何项目类型:邮件,约会,日历,便笺等。可以将RestrictFind / FindNext方法应用于特定的Items集合(请参阅Outlook中Items类的Folder属性)。
  • 完全支持DASL查询(自定义属性也可用于搜索)。您可以在MSDN的Filtering文章中了解有关此内容的更多信息。为了提高搜索性能,如果为商店启用了“即时搜索”,则可以使用“即时搜索”关键字(请参阅IsInstantSearchEnabled类的Store属性)。
  • 您可以随时使用Stop类的Search方法停止搜索过程。

答案 1 :(得分:0)

没有必要尝试查找该物品。

已经用Set item = items.item(lngCount)标识了。

您可以检查主题以查看它是否是您想要的项目。

'Find Email using Subject found on Column C
'Set item = items.Find(FilterText)

'If the object is an Email
If item.Class = olMail Then

    If item.Subject = FilterText Then 

        'Find item under the main Folder subfolders
        Set subfolder = Folder.Folders(FolderMove)

        'Mark Item as Read
        item.UnRead = False

        'Move Item to folder type in Outlook
        item.Move subfolder
    End If

End If