【问题标题】:VBA script to add categories to Outlook emails if string from email matches a string in spreadsheet?如果电子邮件中的字符串与电子表格中的字符串匹配,则 VBA 脚本将类别添加到 Outlook 电子邮件?
【发布时间】:2021-07-25 04:31:19
【问题描述】:

我部门的共享 Outlook 邮箱 (0ffice 365) 每天都会收到大量关于不同项目的电子邮件。问题在于,根据电子邮件发件人的不同,项目以不同的方式被引用。这些项目是大学研究项目,至少有 5 个不同的名称或字母数字与其相关,具体取决于它们所处的阶段。

我的目标是让 VBA 首先循环通过共享收件箱和发送的项目,并为每封电子邮件添加一个类别标签,以便我的团队可以找到并跟进所有不同的线程。其次,VBA 应该为新的入站和发送消息添加一个类别。

这里的关键是 VBA 在 TO:、FROM:、SUBJECT 和 MESSAGE 字段中搜索字符串值,这些值将标识电子邮件所指的项目。 VBA 应该在我们的主项目电子表格中使用它的搜索参数数据。母版表可以存储在 Sharepoint 文档库或 OneDrive 文件夹中。

例如,如果收到的电子邮件在主题行中包含授权编号,但未提及负责该项目的教员。 VBA 会在 Excel 工作表中找到授权编号,并分配一个带有教员姓名的标签(也是主项目工作表中的一个字段)。

摘要 使用主 Excel 电子表格(原理调查员、项目编号、奖励编号、授权编号等)搜索电子邮件(发件人、收件人、抄送、主题、消息)的值以获取搜索参数,然后分配类别(可能会或可能不会已在 Outlook 中创建)到 0365 共享邮箱的收件箱和已发送文件夹中的每封电子邮件。

通常会被问到的其他细节: 所有用户都使用 Outlook 365 帐户(桌面应用程序)在 Windows 10 上。主文件是从我们的 Oracle OBIEE 数据库导出的 .xlsx 文件。我无权直接连接到 Oracle 数据。

提前感谢这个很棒的社区。​​p>

【问题讨论】:

    标签: excel vba email outlook workflow


    【解决方案1】:

    您似乎对使用Application 类的AdvancedSearch 方法感兴趣。在 Outlook 中使用 AdvancedSearch 方法的主要好处是:

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

    Advanced search in Outlook programmatically: C#, VB.NET 文章中了解有关此方法的更多信息。

    您还可以找到 Items 类的 Find/FindNextRestrict 方法。以下文章深入介绍了它们:

    使用MailItem.Categories 属性返回或设置一个字符串,该字符串表示分配给 Outlook 项目的类别。类别是已分配给 Outlook 项目的类别名称的分隔字符串。此属性使用在 Windows 注册表中 HKEY_CURRENT_USER\Control Panel\International 下的值名称 sList 中指定的字符作为多个类别的分隔符。要将类别名称字符串转换为类别名称数组,请使用 Microsoft Visual Basic 函数Split

    Application.NewMailEx 事件为 Microsoft Outlook 处理的每个收到的项目触发一次。该项目可以是几种不同的项目类型之一,例如MailItemMeetingItemSharingItemNewMailEx 事件在新邮件到达收件箱时以及在客户端规则处理发生之前触发。您可以使用EntryIDCollection 数组中返回的Entry ID 来调用NameSpace.GetItemFromID 方法并处理该项目。请谨慎使用此方法,以尽量减少对 Outlook 性能的影响。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多