Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/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
SaveAttachmentsToDisk VBA代码不工作_Vba_Outlook_Email Attachments - Fatal编程技术网

SaveAttachmentsToDisk VBA代码不工作

SaveAttachmentsToDisk VBA代码不工作,vba,outlook,email-attachments,Vba,Outlook,Email Attachments,我正在使用Outlook VBA代码将带有特定文件的附件保存到指定文件夹中。规则运行这个脚本,我看不出规则有任何错误,所以我假设它是代码 这很奇怪,因为它上周运行得很好,我没有改变任何事情。你们看到密码里有什么奇怪的东西吗 谢谢。您无法在VBA中比较Outlook对象和字符串。您很可能希望比较Attachment类的属性,该属性返回一个表示名称的字符串,该名称不需要是实际的文件名,显示在表示嵌入附件的图标下方 Public Sub SaveAttachmentsToDisk(MItem As O

我正在使用Outlook VBA代码将带有特定文件的附件保存到指定文件夹中。规则运行这个脚本,我看不出规则有任何错误,所以我假设它是代码

这很奇怪,因为它上周运行得很好,我没有改变任何事情。你们看到密码里有什么奇怪的东西吗


谢谢。

您无法在VBA中比较Outlook对象和字符串。您很可能希望比较Attachment类的属性,该属性返回一个表示名称的字符串,该名称不需要是实际的文件名,显示在表示嵌入附件的图标下方

Public Sub SaveAttachmentsToDisk(MItem As Outlook.MailItem)
  Dim oAttachment As Outlook.Attachment
  Dim sSaveFolder As String
  sSaveFolder = "C:\Users\axt112\Desktop\downloads\"
  For Each oAttachment In MItem.Attachments
    If oAttachment = "Checkpoint Volume and Movement Times*" Then oAttachment.SaveAsFile sSaveFolder & oAttachment.DisplayName
  Next
End Sub
或使用类似的功能:

Public Sub SaveAttachmentsToDisk(MItem As Outlook.MailItem)
  Dim oAttachment As Outlook.Attachment
  Dim sSaveFolder As String
  sSaveFolder = "C:\Users\axt112\Desktop\downloads\"
  For Each oAttachment In MItem.Attachments
    If oAttachment.DisplayName = "Checkpoint Volume and Movement Times*" Then          
       oAttachment.SaveAsFile sSaveFolder & oAttachment.DisplayName
    Next
End Sub 

你可能会发现这篇文章很有帮助

尝试移动
oAttachment.SaveAsFile…
之后,然后在同一行中,或者在
oAttachment.SaveAsFile…
之后插入
End if
作为新行,它已经在Then之后,我尝试了End if,但它不起作用:/
如果oAttachment像“检查点音量和移动时间*”然后
除非您的附件有确切的名称。。。如果oAttachment.DisplayName也应该是
,它在同一行中。用like再次运行,但不起作用。可能是服务器出了问题或什么的?运行时有没有出错?您也可以尝试使用left函数:
如果left(oAttachment,36)=“检查点数量和移动时间”,则
Public Sub SaveAttachmentsToDisk(MItem As Outlook.MailItem)
  Dim oAttachment As Outlook.Attachment
  Dim sSaveFolder As String
  sSaveFolder = "C:\Users\axt112\Desktop\downloads\"
  For Each oAttachment In MItem.Attachments
    If oAttachment.DisplayName Like "Checkpoint Volume and Movement Times*" Then          
       oAttachment.SaveAsFile sSaveFolder & oAttachment.DisplayName
    Next
End Sub