移动到共享邮箱时的Outlook更改Flagstatus

问题描述 投票:0回答:1

是否可以从电子邮件中更改旗标状态,而我已将其移至共享邮箱中的文件夹?

示例:我收到一封新邮件,并用红色标记标记它。然后,当作业完成时,我将邮件移至“已完成”文件夹。将邮件移动到此文件夹后,我希望Flagstatus为“ olFlagComplete”(绿色标记),并且每次打开Outlook时,代码应检查带有红色标记的邮件文件夹(例如,从手机中移动的邮件)并进行设置到绿色标志。

我尝试了以下操作,但是在打开的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("[email protected]")
    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("[email protected]")
    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
vba outlook outlook-vba
1个回答
0
投票
  1. 首要任务是在启动时用绿色标记标记所有已完成的项目:
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("[email protected]")
    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

  1. 第二部分是处理新添加到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
© www.soinside.com 2019 - 2024. All rights reserved.