vba - 更改具有过去开始日期的 Outlook 约会系列
问题描述
也许你也经历过。当我参与一个已经在运行的项目时,项目负责人或 scrumm master 向我转发约会系列,例如每日站立或类似的系列,并且该系列在我收到邀请之前很久就开始了。
让我们假设以下示例:
- 该系列于 2021 年 1 月 11 日(星期一)开始,每周都会重新上演。
- 我于 2021 年 3 月 16 日(星期二)在收件箱中收到邀请。
当我查看我的日历时,我会在 1 月、2 月等看到这个约会,虽然我当时没有参加,因为我没有被分配。为了让我的日历显示真正发生的事情,我必须手动删除所有这些事件。
我想要归档的是:
- 邀请进入我的收件箱。
- Application_NewMailEx 被触发并运行一段 VBA 代码,用于检查如下所示的系列。
(...)
If TypeName(objInboxObject) = "MeetingItem" Then
Set objAppt = objInboxObject.GetAssociatedAppointment(False)
If Not objAppt Is Nothing Then
If objAppt.IsRecurring Then
Set objRecurrPatt = objAppt.GetRecurrencePattern
If Not objRecurrPatt Is Nothing Then
(...)
- 这很容易处理,但现在棘手的部分是我无法在任何地方找到解决方案,我真的希望你们中的一个可以帮助我。
我怎样才能从今天(我收到它的日期)开始找出下一个未来的事件?在示例中,这将是 2021 年 3 月 22 日。尤其是在重复出现模式比示例中更复杂的情况下。
然后我会用这个计算的日期替换系列的开始日期并保存会议项目。如果我在普通的 Outlook 窗口中接受它,我将来会有一个日历条目,而过去没有。
解决方案
分析RecurrencePattern对象,您可以找到下一次发生的日期。然后,您可以使用RecurrencePattern.GetOccurrence方法AppointmentItem
在指定日期返回对象的特定实例。如果在指定日期不存在该系列的约会,则该GetOccurrence
方法会生成错误。
推荐阅读
- u-sql - U-SQL:如何将参数传递给用户定义的减速器?
- python-3.x - 用于各种维度输入的高效 PyTorch DataLoader collate_fn 函数
- reactjs - 状态存储在 redux 中未正确更新
- c# - 如何使用 CheckBox 更改文本框 TextMode?
- python - 如何在 iMac 上的 IDLE 中清除屏幕?
- ios - 将应用上传到包含 firebase 的 AppStore
- angular - 从服务获取数据到组件订阅方法
- image - 使用 Gdrive 和 Gsheets 的座位计划
- point-clouds - 距离值深度图的点云
- excel-formula - 如何在没有逗号和分隔符的情况下分隔地址内容?(街道/城市/州/邮政编码)