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
Vba 运行时错误'-2147352567(80020009)和#x27;:无法分析条件。错误在";SQL=";urn:schemas:httpmail:datereceived"&引用;_Vba_Outlook - Fatal编程技术网

Vba 运行时错误'-2147352567(80020009)和#x27;:无法分析条件。错误在";SQL=";urn:schemas:httpmail:datereceived"&引用;

Vba 运行时错误'-2147352567(80020009)和#x27;:无法分析条件。错误在";SQL=";urn:schemas:httpmail:datereceived"&引用;,vba,outlook,Vba,Outlook,我试图用有限的知识修改现有代码以满足我的需求。我已经根据Dmitry suggessions自定义了代码,这将导致将附件保存到计算机中的目标文件夹。但是使用startdate和enddate字符串获取变量日期的以下错误 运行时错误“-2147352567(80020009)”: 无法分析条件。“SQL=”urn:schemas:httpmail:datereceived“…”处出错 恰好在设置myRestrictItems=myItems.Restrict(筛选器)时发生错误 但直接约会也行 F

我试图用有限的知识修改现有代码以满足我的需求。我已经根据Dmitry suggessions自定义了代码,这将导致将附件保存到计算机中的目标文件夹。但是使用startdate和enddate字符串获取变量日期的以下错误

运行时错误“-2147352567(80020009)”:

无法分析条件。“SQL=”urn:schemas:httpmail:datereceived“…”处出错

恰好在设置myRestrictItems=myItems.Restrict(筛选器)时发生错误

但直接约会也行

Filter=“@SQL=“&Chr(34)”和“urn:schemas:httpmail:datereceived”和_ Chr(34)和“>=”2017年1月1日“和”_ Chr(34)&“urn:schemas:httpmail:datereceived”&_ Chr(34)和“2018年7月28日”

Sub-Extract()
Dim valid为布尔值:valid=True
将oShell作为对象
将筛选器设置为字符串
将myNamespace设置为Outlook.NameSpace
将myRestrictItems暗显为Outlook.Items
将myItems暗显为Outlook.Items
将myItem设置为对象
我想我会坚持多久
作为Outlook.Attachment的附件
Dim StartDate,EndDate为字符串
设置myNamespace=Application.GetNamespace(“MAPI”)
设置myFolder=myNamespace.PickFolder
设置myItems=myFolder.Items
StartDate=InputBox(“以dd/mm/yyyy格式输入开始日期”,仅适用于vbOKOnly)
EndDate=InputBox(“以dd/mm/yyyy格式输入结束日期”,仅适用于vbOKOnly)
Filter=“@SQL=“&Chr(34)”和“urn:schemas:httpmail:datereceived”和_
Chr(34)和“>=”&开始日期和_
Chr(34)&“urn:schemas:httpmail:datereceived”&_
Chr(34)&“为什么在源文件夹的每次迭代中都要循环目标文件夹中的所有项目?先保存附件,然后移动项目

For i = myRestrictItems.Count To 1 Step -1
   set myItem = myRestrictItems(i)
   for each oAttachment in myItem.Attachments
     oAttachment.SaveAsFile objDestinationFolder & oAttachment.FileName
   next
   myItem.Move myDestFolder
Next

我已经找到了上述运行时错误的答案,日期选取为字符串,我再次将其转换为日期格式,然后将其输入到值中,修复了错误消息。下面是最终代码

Sub Extract()

Dim valid As Boolean: valid = True
Dim oShell As Object
Dim Filter As String
Dim myNamespace As Outlook.NameSpace
Dim myRestrictItems As Outlook.Items
Dim myItems As Outlook.Items
Dim myItem As Object
Dim i As Long
Dim oAttachment As Outlook.Attachment
Dim StartDate, EndDate As String


Set myNamespace = Application.GetNamespace("MAPI")

Set myFolder = myNamespace.PickFolder

Set myItems = myFolder.Items

StartDate = InputBox("Enter the Start Date in dd/mm/yyyy format", vbOKOnly)
EndDate = InputBox("Enter the End Date in dd/mm/yyyy format", vbOKOnly)

StartDate = "'" & Format(StartDate, "Short Date") & "'"
EndDate = "'" & Format(EndDate, "Short Date") & "'"

eFilter = "@SQL= (urn:schemas:httpmail:datereceived >= " & StartDate & _
      " And urn:schemas:httpmail:datereceived <= " & EndDate & ")"


Set myRestrictItems = myItems.Restrict(eFilter)

strFolderpath = CreateObject("WScript.Shell").SpecialFolders(16)

strFolderpath = strFolderpath & "\Attachments\"

For i = myRestrictItems.Count To 1 Step -1

Set myItem = myRestrictItems(i)

    For Each oAttachment In myItem.Attachments

            oAttachment.SaveAsFile strFolderpath & Format(i, "000#") & "_" & oAttachment.FileName
        Next
    Next

 End Sub
Sub-Extract()
Dim valid为布尔值:valid=True
将oShell作为对象
将筛选器设置为字符串
将myNamespace设置为Outlook.NameSpace
将myRestrictItems暗显为Outlook.Items
将myItems暗显为Outlook.Items
将myItem设置为对象
我想我会坚持多久
作为Outlook.Attachment的附件
Dim StartDate,EndDate为字符串
设置myNamespace=Application.GetNamespace(“MAPI”)
设置myFolder=myNamespace.PickFolder
设置myItems=myFolder.Items
StartDate=InputBox(“以dd/mm/yyyy格式输入开始日期”,仅适用于vbOKOnly)
EndDate=InputBox(“以dd/mm/yyyy格式输入结束日期”,仅适用于vbOKOnly)
StartDate=“”&格式(StartDate,“短日期”)&“
EndDate=“”&格式(EndDate,“短日期”)&“
eFilter=“@SQL=(urn:schemas:httpmail:datereceived>=”&StartDate&_

“和urn:schemas:httpmail:datereceived在代码块中添加源代码谢谢Dmitry,我已经用上面的建议更新了VBA代码,但它不会保存附件,而是将我的电子邮件移动到邮箱中名为“Filtered”的文件夹中。另外,我需要使用字符串StartDate和EndDate输入日期,它会得到我的输入,但不适用。
Sub Extract()

Dim valid As Boolean: valid = True
Dim oShell As Object
Dim Filter As String
Dim myNamespace As Outlook.NameSpace
Dim myRestrictItems As Outlook.Items
Dim myItems As Outlook.Items
Dim myItem As Object
Dim i As Long
Dim oAttachment As Outlook.Attachment
Dim StartDate, EndDate As String


Set myNamespace = Application.GetNamespace("MAPI")

Set myFolder = myNamespace.PickFolder

Set myItems = myFolder.Items

StartDate = InputBox("Enter the Start Date in dd/mm/yyyy format", vbOKOnly)
EndDate = InputBox("Enter the End Date in dd/mm/yyyy format", vbOKOnly)

StartDate = "'" & Format(StartDate, "Short Date") & "'"
EndDate = "'" & Format(EndDate, "Short Date") & "'"

eFilter = "@SQL= (urn:schemas:httpmail:datereceived >= " & StartDate & _
      " And urn:schemas:httpmail:datereceived <= " & EndDate & ")"


Set myRestrictItems = myItems.Restrict(eFilter)

strFolderpath = CreateObject("WScript.Shell").SpecialFolders(16)

strFolderpath = strFolderpath & "\Attachments\"

For i = myRestrictItems.Count To 1 Step -1

Set myItem = myRestrictItems(i)

    For Each oAttachment In myItem.Attachments

            oAttachment.SaveAsFile strFolderpath & Format(i, "000#") & "_" & oAttachment.FileName
        Next
    Next

 End Sub