首页 > 解决方案 > 接受时如何从 Outlook 约会邀请主题行中删除“RE:”或“Fwd:”或“[EXT]”?

问题描述

我在 Win10 上使用 Outlook 2019。

我的公司将前缀“[EXT]:”添加到从我们网络外部收到的所有电子邮件的主题行中。这包括邀请。因此,“[EXT]:”在我的大部分日历中。当 90% 的科目以 [EXT] 开头时,我很难通过手机查看繁忙的日历:

我可以找出 VBA 代码以在主题行中查找 RE: 或 Fwd: 或 [EXT]: 并替换/删除它们。

当单击接受、接受响应、试探等按钮/下拉菜单时,如何自动触发 VBA 代码?

标签: vbaoutlookappointmentoutlook-2019

解决方案


当单击这些按钮中的任何一个时,响应将发送回组织者,您可以尝试处理OutlookItemSend中的类事件,Application只要发送 Microsoft Outlook 项目就会触发该事件,或者由用户通过检查器(在检查器之前)关闭,但在用户单击发送按钮后)或在程序中使用SendOutlook 项目的方法(例如)时MailItem

您可能还会发现Items.ItemChange事件很有帮助,它会在指定集合中的项目发生更改时触发。

Public WithEvents myOlItems As Outlook.Items 
 
Public Sub Initialize_handler() 
 Set myOlItems = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderCalendar).Items 
End Sub 
 
Private Sub myOlItems_ItemChange(ByVal Item As Object)
Dim prompt As String 
 If VBA.Format(Item.Start, "h") >= "17" And Item.Sensitivity <> olPrivate Then 
   prompt = "Appointment occurs after hours. Mark it private?" 
   If MsgBox(prompt, vbYesNo + vbQuestion) = vbYes Then 
     Item.Sensitivity = olPrivate 
     Item.Display 
   End If 
 End If
End Sub

另一种方法是处理所有传入的电子邮件并删除主题前缀。NewMailEx事件在新邮件到达收件箱时触发,在客户端规则处理发生之前您可以使用EntryIDCollection数组中返回的条目 ID 来调用NameSpace.GetItemFromID方法并处理该项目。对于 Microsoft Outlook 处理的每个收到的项目,此事件都会触发一次。该项目可以是几种不同的项目类型之一,例如MailItemMeetingItemSharingItem


推荐阅读