vba - 在移动到共享邮箱时更改标志状态
问题描述
是否可以更改移动到共享邮箱中文件夹的电子邮件的标志状态?
示例:我收到一封新邮件并用红旗标记。然后,当工作完成后,我将邮件移动到“已完成”文件夹。
将邮件移动到此文件夹后,我希望 Flagstatus 为“olFlagComplete”(绿旗),每次打开 Outlook 时,代码都应检查文件夹中是否有带有红旗的邮件(例如从手机移动的邮件)并设置它到绿旗。
我尝试了以下,但没有任何反应。
Private WithEvents Items As Outlook.Items
Private Sub Application_Startup()
Dim olNameSpace As Outlook.NameSpace
Dim olFolder As Outlook.MAPIFolder
Set olNameSpace = Application.GetNamespace("MAPI")
Set olFolder = olNameSpace.Folders("name@company.com")
Set olFolder = olFolder.Folders("Completed")
Set Items = olFolder.Items
End Sub
Private Sub Items_ItemChange(ByVal Item As Object)
Dim olNameSpace As Outlook.NameSpace
Dim olFolder As Outlook.MAPIFolder
Dim Mail As MailItem
Set olNameSpace = Application.GetNamespace("MAPI")
Set olFolder = olNameSpace.Folders("name@company.com")
Set olFolder = olFolder.Folders("Completed")
If TypeOf Item Is Outlook.MailItem Then
Set Mail = Item
If Mail.FlagStatus = olFlagMarked Then
'Set ItemCopy = Item.Copy ' Copy Flagged item
'ItemCopy.Move olFolder ' Move Copied item
Set Mail.FlagStatus = olFlagComplete
End If
Set Item = Nothing
'Set ItemCopy = Nothing
End If
End Sub
解决方案
- 第一个任务是在启动时用绿旗标记所有已完成的项目:
Private WithEvents Items As Outlook.Items
Private Sub Application_Startup()
Dim olNameSpace As Outlook.NameSpace
Dim olFolder As Outlook.MAPIFolder
Set olNameSpace = Application.GetNamespace("MAPI")
Set olFolder = olNameSpace.Folders("name@company.com")
Set olFolder = olFolder.Folders("Completed")
Set Items = olFolder.Items
For Each Item In Items
If TypeOf Item Is Outlook.MailItem Then
Set Mail = Item
If Mail.FlagStatus = olFlagMarked Then
Set Mail.FlagStatus = olFlagComplete
End If
End If
Next
End Sub
- 第二部分是处理
Completed
文件夹中新添加的项目:
Private Sub Items_ItemAdd(ByVal Item As Object)
If TypeOf Item Is Outlook.MailItem Then
Set Mail = Item
If Mail.FlagStatus = olFlagMarked Then
Set Mail.FlagStatus = olFlagComplete
End If
End If
End Sub
推荐阅读
- c# - Rx.NET 中是否存在功能类似于 BehaviorSubject 但仅在值发生更改时才发出的 Subject 实现?
- xcode - Xcode 在禁用的代码行上触发断点
- flutter - 永远不会调用 ChangeNotifierProxyProvider 创建函数
- angular - 打字稿将计算值添加到类
- javascript - 如何使用 Javascript 自动滚动 ReactJS 项目类
- java - 如何将两个不同集合中的两个字段相乘
- c# - C#如何将两种数据类型合并到一个列表中
- javascript - 如何在 Nodejs 模块 Regex 中使用土耳其语字符
- c# - 如何在 C# 中为 WPF 在 JPG 上绘制矩形
- kotlin - 如何在 Kotlin 中随机从 ArrayList 中提取条目?