Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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 - Fatal编程技术网

Vba 搜索具有特定主题的最新电子邮件

Vba 搜索具有特定主题的最新电子邮件,vba,outlook,Vba,Outlook,我有下面的代码工作 我现在需要找到最新的电子邮件与该主题行,并打开它 打开电子邮件后,我想将附件保存到桌面,并关闭打开的电子邮件 Sub SearchOL() Dim olApp As Outlook.Application Dim olNs As NameSpace Dim Fldr As MAPIFolder Dim olMail As Variant Dim i As Integer Set olApp = New Outlook.Application Set olN

我有下面的代码工作

我现在需要找到最新的电子邮件与该主题行,并打开它

打开电子邮件后,我想将附件保存到桌面,并关闭打开的电子邮件

 Sub SearchOL()

 Dim olApp As Outlook.Application
 Dim olNs As NameSpace
 Dim Fldr As MAPIFolder
 Dim olMail As Variant
 Dim i As Integer

 Set olApp = New Outlook.Application
 Set olNs = olApp.GetNamespace("MAPI")
 Set Fldr = olNs.GetDefaultFolder(olFolderInbox)
 i = 1
 For Each olMail In Fldr.Items
     If InStr(olMail.Subject, "DNP Warn and Pend Event") <> 0 Then
     olMail.Display
     i = i + 1
     End If
 Next olMail
 End Sub
Sub SearchOL()
Dim olApp作为Outlook.Application
Dim-olNs作为名称空间
将Fldr设置为MAPI文件夹
以电子邮件作为变体
作为整数的Dim i
Set olApp=newoutlook.Application
Set olNs=olApp.GetNamespace(“MAPI”)
设置Fldr=olNs.GetDefaultFolder(olFolderInbox)
i=1
对于Fldr.项目中的每个olMail
如果InStr(olMail.Subject,“DNP警告和挂起事件”)为0,则
olMail.Display
i=i+1
如果结束
下一封邮件
端接头

我建议从MSDN中的文章开始

使用Items类的/或方法查找具有特定主题行的电子邮件,而不是遍历每封电子邮件并检查主题行

Sub DemoFindNext() 
 Dim myNameSpace As Outlook.NameSpace 
 Dim tdystart As Date 
 Dim tdyend As Date 
 Dim myAppointments As Outlook.Items 
 Dim currentAppointment As Outlook.AppointmentItem 

 Set myNameSpace = Application.GetNamespace("MAPI") 
 tdystart = VBA.Format(Now, "Short Date") 
 tdyend = VBA.Format(Now + 1, "Short Date") 
 Set myAppointments = myNameSpace.GetDefaultFolder(olFolderCalendar).Items 
 Set currentAppointment = myAppointments.Find("[Start] >= """ & tdystart & """ and [Start] <= """ & tdyend & """") 
 While TypeName(currentAppointment) <> "Nothing" 
  MsgBox currentAppointment.Subject 
  Set currentAppointment = myAppointments.FindNext 
 Wend 
End Sub
子DemoFindNext()
将myNameSpace设置为Outlook.NameSpace
Dim tdystart作为日期
Dim tdyend As Date
将我的约会设置为Outlook.Items
将当前约会设置为Outlook.AppointmentItem
设置myNameSpace=Application.GetNamespace(“MAPI”)
tdystart=VBA.Format(现在是“短日期”)
tdyend=VBA.Format(现在+1,“短日期”)
设置myAppointments=myNameSpace.GetDefaultFolder(olFolderCalendar).Items

设置currentAppointment=MyAppoints.Find(“[Start]>=””&tdystart&“)和[Start]您尝试过什么吗?如果这是Outlook中的VBA,您根本不需要
olApp
。将其替换为
Application
。当您可以进行另一个循环以自动保存邮件项目中的任何附件时,为什么要显示它?请注意,收件箱中的项目可能不是邮件项目。