vba - 接受时如何从 Outlook 约会邀请主题行中删除“RE:”或“Fwd:”或“[EXT]”?
问题描述
我在 Win10 上使用 Outlook 2019。
我的公司将前缀“[EXT]:”添加到从我们网络外部收到的所有电子邮件的主题行中。这包括邀请。因此,“[EXT]:”在我的大部分日历中。当 90% 的科目以 [EXT] 开头时,我很难通过手机查看繁忙的日历:
我可以找出 VBA 代码以在主题行中查找 RE: 或 Fwd: 或 [EXT]: 并替换/删除它们。
当单击接受、接受响应、试探等按钮/下拉菜单时,如何自动触发 VBA 代码?
解决方案
当单击这些按钮中的任何一个时,响应将发送回组织者,您可以尝试处理OutlookItemSend
中的类事件,Application
只要发送 Microsoft Outlook 项目就会触发该事件,或者由用户通过检查器(在检查器之前)关闭,但在用户单击发送按钮后)或在程序中使用Send
Outlook 项目的方法(例如)时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 处理的每个收到的项目,此事件都会触发一次。该项目可以是几种不同的项目类型之一,例如MailItem
、MeetingItem
或SharingItem
。
推荐阅读
- regex - 对 Dart 中的 `(?=)` 正则表达式感到困惑?我知道这是一个前瞻。正文中的更多细节
- gcc - 装配气体 - 使用 gcc 和 ld 编译导致分段错误
- python - 向 pandas MultiIndex 添加一个新分支
- swift - 将核心数据包装到可编码结构中
- postgresql - 全文搜索在单个稀有单词上运行缓慢,但在重复相同单词时运行快速?
- php - 存储在提供的数组中后删除所有 httprequest,如 get、post、file 请求
- android - 在片段布局的约束布局中添加工具栏
- javascript - Plyr 视频播放器:如何公开/访问多个播放器?
- laravel - 拉取请求的 Laravel 购物车安装
- javascript - How to reset or clear a spy in Jest?