【问题标题】:Saving specific attachment from Outlook从 Outlook 保存特定附件
【发布时间】:2022-12-14 09:15:43
【问题描述】:

我想找到附件名为“IE529”或 599 或 ZC 且扩展名为 .xml 的电子邮件,并将它们保存到共享驱动器上的文件夹中。

Outlook 似乎处理了代码,但两个附件都没有保存。

一旦此代码生效,我将考虑如何将参数“.xml”添加到条件中。

Public Sub Komunikaty(MItem As Outlook.MailItem)
    
    Dim Zalacznik As Outlook.Attachment
    Dim KatalogIE529 As String
    Dim KatalogIE599 As String
    Dim KatalogZC299 As String
    
    KatalogIE529 -"xxxx"
    KatalogIE599 -"zzzz"
    KatalogZC299 -"yyyyy"
    
    For Each Zalacznik In MItem.Attachments
    
        If InStr(1, Zalacznik.DisplayName, "IE529", vbTextCompare) Then
            Zalacznik.SaveAsFile KatalogIE529 & Zalacznik.DisplayName
        
        ElseIf InStr(1, Zalacznik.DisplayName, "IE599", vbTextCompare) Then
            Zalacznik.SaveAsFile KatalogIE599 & Zalacznik.DisplayName
    
        ElseIf InStr(1, Zalacznik.DisplayName, "ZC299", vbTextCompare) Then
            Zalacznik.SaveAsFile KatalogZC299 & Zalacznik.DisplayName
    
        End If
    Next
End Sub

应用一些更正后,我的代码将附件保存到给定的文件夹中,但我不知道如何只保存扩展名为“.xml”的附件。

我试过“AND”,但之后它不起作用。
它可以保存 xml 或 IE529。

我如何更新此代码,以便它搜索 xml 文件?

Public Sub Komunikaty(MItem As Outlook.MailItem)
    
    Dim Zalacznik As Outlook.Attachment
    Dim KatalogIE529 As String
    Dim KatalogIE599 As String
    Dim KatalogZC299 As String
    
    KatalogIE529 = "C:"
    KatalogIE599 = "C:"
    KatalogZC299 = "C:"
    
    For Each Zalacznik In MItem.Attachments
    
        If (InStr(1, Zalacznik.DisplayName, "IE529", vbTextCompare)) Then
            Zalacznik.SaveAsFile KatalogIE529 & "\" & Zalacznik.DisplayName
        
        ElseIf InStr(1, Zalacznik.DisplayName, "IE599", vbTextCompare) Then
            Zalacznik.SaveAsFile KatalogIE599 & "\" & Zalacznik.DisplayName
    
        ElseIf InStr(1, Zalacznik.DisplayName, "ZC299", vbTextCompare) Then
            Zalacznik.SaveAsFile KatalogZC299 & "\" & Zalacznik.DisplayName
    
        End If
    Next
End Sub

【问题讨论】:

  • "IE529" & "xml" 不单独搜索 IE529xml,它搜索 IE529xml
  • 根本没有短语“xml”,它仍然不起作用。对于未来,如果我们最终使公式起作用,如何创建两个参数,如“标题中的扩展名和短语”?
  • 您是否尝试在附加的调试器下运行代码并逐行检查每一行代码以检查结果?您将什么值准确传递给SaveAsFile 方法?
  • 我刚刚添加了更新的工作代码,但仍然存在如何通过其他人只保存 xml 文件的问题?
  • 这回答了你的问题了吗? Save only PDF attachments VBA Outlook

标签: vba email outlook attachment email-attachments


【解决方案1】:

Attachment.SaveAsFile 方法接受一个字符串,该字符串指定保存附件的位置。 Office 应用程序旨在仅处理本地磁盘,因此将附件保存到本地驱动器然后将其复制到需要的地方(共享驱动器)是有意义的。请注意,您需要指定完整的文件路径(而非相对路径)并确保传递给 SaveAsFile 方法的字符串中没有禁止使用的符号。

另请注意,附件可能不会实际显示在项目上,只有 Attachment.Type 属性值设置为 olByValue 的项目才能被检索并保存到磁盘(文件)。因此,在调用 SaveAsFile 方法之前检查附件类型是有意义的。

【讨论】:

  • 您好,在提供 filpath 时,我用“-”代替了“=”。我在放置 SaveAsFile 时也没有包含“&”“&”。现在代码工作正常,但我需要添加额外的参数以仅通过扩展名为 xml 的 attachmnets 进行过滤。
  • 您可以检查我们的 Attachment.FileName 属性,它返回一个表示附件文件名的字符串。因此,您可以检查文件扩展名并决定是否保存它。
猜你喜欢
  • 1970-01-01
  • 2021-09-14
  • 1970-01-01
  • 2019-03-17
  • 1970-01-01
  • 1970-01-01
  • 2023-02-02
  • 2015-05-08
  • 1970-01-01
相关资源
最近更新 更多