Vba 搜索带有特定主题标题的电子邮件(如果未读),并将附件保存到文件夹中

Vba 搜索带有特定主题标题的电子邮件(如果未读),并将附件保存到文件夹中,vba,email,outlook,Vba,Email,Outlook,我正在使用以下vba代码,该代码应搜索具有特定主题标题(即主题为“测试”)的所有电子邮件 然后,仅当电子邮件未读时,才将该电子邮件中的附件保存到文件夹中 可能有一封或几封带有主题测试的电子邮件,因此我希望所有带有主题测试的未读电子邮件的附件都保存到文件夹中 这是我的密码: Sub Work_with_Outlook() Set olApp = CreateObject("Outlook.Application") Dim olNs As Outlook.Namespace

我正在使用以下vba代码,该代码应搜索具有特定主题标题(即主题为“测试”)的所有电子邮件

然后,仅当电子邮件未读时,才将该电子邮件中的附件保存到文件夹中

可能有一封或几封带有主题测试的电子邮件,因此我希望所有带有主题测试的未读电子邮件的附件都保存到文件夹中

这是我的密码:

Sub Work_with_Outlook()

 Set olApp = CreateObject("Outlook.Application")

     Dim olNs As Outlook.Namespace
     Dim Fldr As Outlook.MAPIFolder
     Dim myItem As Object
     Dim myAttachment As Outlook.Attachment
     Dim I As Long
     Dim olMail As Variant


     Set olApp = New Outlook.Application
     Set olNs = olApp.GetNamespace("MAPI")
     Set Fldr = olNs.GetDefaultFolder(olFolderInbox)
     Set myTasks = Fldr.Items

  Set UnRead = myTasks.Restrict("[UnRead] = False")
  Set olMail = myTasks.Find("[Subject] = ""test""")
  If Not (olMail Is Nothing) And UnRead.Count = 0 Then






    For Each myItem In myTasks
        If myItem.Attachments.Count <> 0 Then
            For Each myAttachment In myItem.Attachments
            If InStr(myAttachment.DisplayName, ".txt") Then
                I = I + 1
                myAttachment.SaveAsFile "\\uksh000-file06\Purchasing\NS\Unactioned\" & myAttachment
                End If
            Next
        End If

    Next


For Each myItem In myTasks
myItem.UnRead = False
Next

  MsgBox "Scan Complete."

  Else
  MsgBox "There Are No New Supplier Requests."
  End If

End Sub
这在某种程度上是可行的,如果我只有一封主题为“测试”的电子邮件,而且它还未读,那么脚本将从该电子邮件中获取附件并将其保存到我的文件夹中。但是,如果我有一封主题为“test”的电子邮件已读,而另一封主题为“test”的电子邮件未读,那么代码将无法工作


有人能告诉我哪里出了问题吗?提前感谢

看起来您需要将这两个条件合并为一个条件,并使用Find/FindNext或Restrict方法获取Items类的实例,该类包含与您的条件对应的所有项目。例如:

 Set resultItems = myTasks.Restrict("[UnRead] = False AND [Subject] = ""test""")
有关MSDN中的信息,请参阅

您还可以在以下文章中找到示例代码: