Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 从未读项目下载附件,并且来自特定发件人_Vba_Outlook_Outlook 2010_Outlook Filter - Fatal编程技术网

Vba 从未读项目下载附件,并且来自特定发件人

Vba 从未读项目下载附件,并且来自特定发件人,vba,outlook,outlook-2010,outlook-filter,Vba,Outlook,Outlook 2010,Outlook Filter,我想从MS Outlook中未读和从特定发件人收到的电子邮件中下载所有附件 我找到了一个代码,可以从所有未读的电子邮件中下载所有附件。 并试图适应它 但是,过滤器工作不正常。这表明没有这样的电子邮件 Filter = "[Unread] = True And [SenderEmailAddress] = 'yrybchuk@gmail.com'" 下面是整个代码: Option Explicit Public Sub Example() Dim oOlAp As Object Dim olNs

我想从MS Outlook中未读和从特定发件人收到的电子邮件中下载所有附件

我找到了一个代码,可以从所有未读的电子邮件中下载所有附件。 并试图适应它

但是,过滤器工作不正常。这表明没有这样的电子邮件

Filter = "[Unread] = True And [SenderEmailAddress] = 'yrybchuk@gmail.com'"
下面是整个代码:

Option Explicit
Public Sub Example()
Dim oOlAp As Object
Dim olNs As Outlook.Namespace
Dim Inbox As Outlook.MAPIFolder
Dim Items As Outlook.Items
Dim Item As Outlook.MailItem
Dim Atmt As Attachment
Dim Filter As String
Dim FilePath As String
Dim AtmtName As String
Dim i As Long

'// Set Inbox Reference
Set oOlAp = GetObject(, "Outlook.application")
Set olNs = oOlAp.GetNamespace("MAPI")
Set Inbox = olNs.GetDefaultFolder(olFolderInbox)

FilePath = "C:\Users\irybchuk\Documents\"
Filter = "[Unread] = True And [SenderEmailAddress] = 'yrybchuk@gmail.com'"
Set Items = Inbox.Items.Restrict(Filter)

'// Loop through backwards
For i = Items.Count To 1 Step -1
    Set Item = Items.Item(i)

    DoEvents

    If Item.Class = olMail Then
        Debug.Print Item.Subject ' Immediate Window

        For Each Atmt In Item.Attachments
            AtmtName = FilePath & Atmt.FileName
            Atmt.SaveAsFile AtmtName
        Next
    End If
Next

Set Inbox = Nothing
Set Items = Nothing
Set Item = Nothing
Set Atmt = Nothing
Set olNs = Nothing
End Sub
我相信在这里:可以描述出可能的解决方案是如何更换过滤线。然而,我做不到

您的过滤器似乎适合我,但这里有一个不同的您可以使用

或者更好的方法是使用附件来改进循环

记得更新
%yrybchuk@gmail.com%

供参考
如果代码是从Outlook运行的,则不需要
oOlAp=GetObject(,“Outlook.application”)

您的过滤器似乎适合我,但这里有一个不同的您可以使用

或者更好的方法是使用附件来改进循环

记得更新
%yrybchuk@gmail.com%

供参考
如果代码是从Outlook运行的,则不需要
oOlAp=GetObject(,“Outlook.application”)


我看不出你的过滤器有什么问题,你在哪个办公室,你有没有收到任何错误?我正在使用MS office 2010,没有收到任何错误。问题是,它找不到这样的电子邮件-这表明盒子里并没有这样的电子邮件。如果我只对未读邮件使用过滤器,它会找到一封。我看不出你的过滤器有什么问题,你在哪个办公室,你有没有收到任何错误?我使用的是MS office 2010,没有收到任何错误。问题是,它找不到这样的电子邮件-这表明盒子里并没有这样的电子邮件。如果我只对未读的邮件使用过滤器,它会找到一个。我使用了受限过滤器,它工作了。谢谢。我使用了受限过滤器,效果很好。非常感谢。
Filter = "@SQL=" & Chr(34) & "urn:schemas:httpmail:fromname" & _
                   Chr(34) & " Like '%yrybchuk@gmail.com%' AND " & _
                   Chr(34) & "urn:schemas:httpmail:read" & _
                   Chr(34) & "=0"
Filter = "@SQL=" & Chr(34) & "urn:schemas:httpmail:fromname" & _
                   Chr(34) & " Like '%yrybchuk@gmail.com%' AND " & _
                   Chr(34) & "urn:schemas:httpmail:hasattachment" & _
                   Chr(34) & "=1 AND " & _
                   Chr(34) & "urn:schemas:httpmail:read" & _
                   Chr(34) & "=0"