Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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 如何从Outlook文件夹中的最新邮件中查找和下载附件?_Vba_Excel_Outlook - Fatal编程技术网

Vba 如何从Outlook文件夹中的最新邮件中查找和下载附件?

Vba 如何从Outlook文件夹中的最新邮件中查找和下载附件?,vba,excel,outlook,Vba,Excel,Outlook,我创建了一个文件夹,所有的邮件都是根据规则存放的。文件夹中的邮件每天都在累积。我想从该文件夹中的最新邮件下载附件。目前,我能够解析所有文件并从所有邮件下载附件。如何仅从最新邮件下载?下面是我的代码 Sub FebAttachment_Click() Const AttachmentPath As String = "D:\Documents and Settings\rahul.baskaran\Desktop\" Dim oApp As Object, ONS As Object, OInb

我创建了一个文件夹,所有的邮件都是根据规则存放的。文件夹中的邮件每天都在累积。我想从该文件夹中的最新邮件下载附件。目前,我能够解析所有文件并从所有邮件下载附件。如何仅从最新邮件下载?下面是我的代码

Sub FebAttachment_Click()
Const AttachmentPath As String = "D:\Documents and Settings\rahul.baskaran\Desktop\"
Dim oApp As Object, ONS As Object, OInb As Object
Dim OItem, OAtch As Object
Dim OFind As Object
Dim OMail As Object
Dim strName As String
Dim strExt As String


Set oApp = GetObject(, "Outlook.application")
Set ONS = oApp.GetNamespace("MAPI")
Set OInb = ONS.Folders("Archive Folders").Folders("BIZOPS").Folders("2014.02")
Set OMail = OInb.Items
For Each OItem In OInb.Items

If OItem.Attachments.Count <> 0 Then
        For Each OAtch In OItem.Attachments
            strName = OAtch.Filename
            strExt = Split(strName, ".z")(0)
            OAtch.SaveAsFile AttachmentPath & OAtch.Filename
            Exit For
        Next
    Else
        MsgBox "The mail doesn't have an attachment"
        End If
Next OItem
Sub febatachment_Click()
Const AttachmentPath As String=“D:\Documents and Settings\rahul.baskaran\Desktop\”
Dim oApp作为对象,ONS作为对象,OInb作为对象
以燕麦为对象
将OFID作为对象
将OMail作为对象
将strName设置为字符串
像弦一样的暗线
设置oApp=GetObject(,“Outlook.application”)
设置ONS=oApp.GetNamespace(“MAPI”)
设置OInb=ONS.Folders(“归档文件夹”).Folders(“BIZOPS”).Folders(“2014.02”)
设置OMail=OInb.Items
对于OInb.项目中的每个OItem
如果OItem.Attachments.Count为0,则
每种燕麦的油膜附件
strName=OAtch.Filename
strExt=Split(strName,“.z”)(0)
OAtch.SaveAsFile附件路径和OAtch.Filename
退出
下一个
其他的
MsgBox“邮件没有附件”
如果结束
下一个项目

按创建日期(items.Sort)按降序对项目进行排序,然后检索集合中的第一个项目


确保您的代码在相同的Items集合上运行(检索OInb.Items一次并将其缓存在变量中)。

这很好。我使用了排序,并且在我将此部分从OInb中每个OItem的
更改为OMail中每个OItem的
。虽然我不知道这有什么关系。谢谢你的帮助。:)每次调用MAPIFolder.Items时,您都会得到一个全新的COM对象,该对象不知道同一对象的任何其他实例。这就是为什么我建议只检索Items集合一次,以确保调用Sort并从对象的同一实例检索Items。