提示用户一次但将结果应用于多条消息的规则?

时间:2018-05-01 09:31:54

标签: vba outlook outlook-vba

我想将一个特殊类别应用于一系列Outlook电子邮件。

我有一个VBA脚本,要求用户输入一个字符串,然后将其设置为电子邮件的类别。我通过将所有要更新的电子邮件移动到临时文件夹来运行此操作,然后对该文件夹中的所有邮件运行Outlook规则。

Public Sub PromptForCat(Email As Outlook.MailItem)
   Category = InputBox("Please enter category to add :")
   Email.Categories = Email.Categories & "," & Category
   Email.Save
End Sub

但是,这会提示我输入文件夹中的每条消息 - 有没有办法只提示我一次,但是将结果应用到文件夹中的所有消息?

1 个答案:

答案 0 :(得分:0)

如果您需要为选定的文件夹运行一次代码,则需要遍历文件夹中的所有项目。 Items类的Folder属性将Items集合对象作为指定文件夹中的Outlook项集合返回:

Sub ContactDateCheck() 
  Dim myNamespace As Outlook.NameSpace 
  Dim myContacts As Outlook.Items 
  Dim myItem As Object 

  Set myNamespace = Application.GetNamespace("MAPI") 
  Set myContacts = myNamespace.GetDefaultFolder(olFolderContacts).Items 
  For Each myItem In myContacts 
    If (myItem.Class = olContact) Then 
      MsgBox myItem.FullName &; ": " &; myItem.LastModificationTime 
    End If 
  Next 
End Sub

要在Outlook中获取所选项目,您需要使用Explorer类的Selection属性:

Sub GetSelectedItems()
  Dim myOlExp As Outlook.Explorer
  Dim myOlSel As Outlook.Selection
  Dim MsgTxt As String
  Dim x As Integer

  MsgTxt = "You have selected items from: "
  Set myOlExp = Application.ActiveExplorer
  Set myOlSel = myOlExp.Selection
  For x = 1 To myOlSel.Count
    MsgTxt = MsgTxt & myOlSel.Item(x).SenderName & ";"
  Next x
  MsgBox MsgTxt
End Sub