Outlook VBA保存附件运行时错误-2147287032(80030008),然后将其删除

Outlook VBA保存附件运行时错误-2147287032(80030008),然后将其删除,vba,outlook,Vba,Outlook,我有一个vba来保存从这里获取的选定电子邮件的附件;) 在我选择更多的电子邮件之前,代码完全满足我的需要。数量不尽相同,我认为这与附件的数量有关。VBA运行时错误-2147287032(80030008)发生在这一行上 objAttachments.Item(i).SaveAsFile strFile 在我看来,似乎我必须清理一些变量,但我无法找到哪一个和在哪里 我想获得的另一项任务是删除已处理的电子邮件(只需移动到“已删除”即可) 显然,objMail.Delete可以完成这项工作,但我未

我有一个vba来保存从这里获取的选定电子邮件的附件;) 在我选择更多的电子邮件之前,代码完全满足我的需要。数量不尽相同,我认为这与附件的数量有关。VBA运行时错误-2147287032(80030008)发生在这一行上

 objAttachments.Item(i).SaveAsFile strFile
在我看来,似乎我必须清理一些变量,但我无法找到哪一个和在哪里

我想获得的另一项任务是删除已处理的电子邮件(只需移动到“已删除”即可)

显然,objMail.Delete可以完成这项工作,但我未能将其集成到代码中


谢谢大家!

如果未执行以下任何操作:

If InStr(objMsg, "case1") > 0 Then
            strFolderpath = "C:\case1"
End If
   
If InStr(objMsg, "case2") > 0 Then
            strFolderpath = "C:\case2"
End If
最后可能会出现
strFolderpath
未正确初始化的情况。因此,我建议设置默认值:

Dim strFolderpath As String = "C:\case"

确保传递给该方法的路径字符串是有效的文件路径。

错误代码为
STG\u E\u内存不足。您是否正在尝试保存以保存附件,而不是
olByValue
?您可能会得到一个
olOle
附件,不能使用
attachment.SaveAsFile
保存该附件。请务必检查
附件。首先键入
属性

另一种可能性是,在联机(而不是缓存)Exchange存储的情况下,您正在运行RPC通道。确保在使用完所有变量后立即释放它们,以避免RPC-否则,当子对象退出时,当对象超出范围时将释放它们

Set objAttachments = objMsg.Attachments
For i = lngCount To 1 Step -1
  set objAttach = objAttachments.Item(i)
  strFile = objAttach.FileName
  strFile = strFolderpath & strFile
  objAttach.SaveAsFile strFile
  set objAttach = Nothing
Next i
set objAttachments = Nothing

不幸的是没有帮助,同样的错误是您的驱动器容量不足吗?确保有足够的内存槽可用于存储附加的文件。绝对没有,有~50GB的可用空间,我正在处理~500MB的电子邮件。运行脚本时,操作内存根本不会改变,并且始终有至少1GB的空闲内存ID。在保存到磁盘之前,您有机会检查属性吗?这与我的VBA技能相去甚远,因此我无法完全响应,但我认为这不是问题所在。在某些电子邮件上,代码从不停止。假设我有200封邮件要处理。当我把它们全部选中时,我得到了错误。当我在两次运行100+100期间处理相同的电子邮件时,它们处理得很好…请参见上面的更新答案否:/但是发生了一些变化-错误现在是-2147024882(8007000e)我有2GB的可用内存,在运行期间它几乎不移动错误是MAPI\u E\u内存不足。您的代码的最新版本是什么?您不能删除
objMail
,因为它没有出现在代码中。
Set objAttachments = objMsg.Attachments
For i = lngCount To 1 Step -1
  set objAttach = objAttachments.Item(i)
  strFile = objAttach.FileName
  strFile = strFolderpath & strFile
  objAttach.SaveAsFile strFile
  set objAttach = Nothing
Next i
set objAttachments = Nothing