You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Outlook规则移动邮件后,保存PDF附件但无法删除原邮件附件

问题:Outlook VBA保存PDF附件后无法从邮件中移除附件

我正尝试将特定发件人邮件中的PDF附件保存到本地,然后删除原邮件中的对应附件。目前保存功能正常,但附件并未从已存储的邮件中移除。

使用的VBA代码如下:

Sub SaveAttachmentsFromSelectedItemsPDF(Item As Outlook.MailItem)

    Set attachs = Item.Attachments
    Dim currentAttachment As Outlook.Attachment
    Dim i As Long
    
    For i = attachs.Count To 1 Step -1
        Set currentAttachment = attachs.Item(i)
        If UCase(Right(currentAttachment.DisplayName, 4)) = ".PDF" Then
            file = currentAttachment.FileName
            currentAttachment.SaveAsFile "C:\test\" & file
            Item.Attachments.Remove i
        End If
    Next
    Item.Save

End Sub

我尝试过多种格式(包括将i放在括号中),也尝试过在每次循环中删除currentAttachment,但问题依旧。

设置的Outlook规则如下:

  • 收到来自指定测试地址的邮件时
  • 将其移动至ATTACHMENT文件夹,然后执行SaveAttachmentScript脚本并标记为已读

问题原因及解决办法

当通过Outlook规则先移动邮件再执行脚本时,你操作的是移动前的原始邮件副本,而非已经转移到ATTACHMENT文件夹的那封邮件。所以你在目标文件夹看到的是未修改的移动副本,自然看不到附件被移除的效果。

具体调整步骤:

  1. 修改规则执行顺序
    把规则动作的顺序调换:先执行脚本(保存并删除附件),再移动邮件到ATTACHMENT文件夹。这样脚本直接操作原始邮件,修改完成后再移动到目标文件夹,就能看到附件已被移除。

  2. 优化代码细节
    对原代码做几点优化,提升稳定性:

    Sub SaveAttachmentsFromSelectedItemsPDF(Item As Outlook.MailItem)
        Dim attachs As Outlook.Attachments
        Dim currentAttachment As Outlook.Attachment
        Dim i As Long
        Dim savePath As String
        Dim fileName As String
        
        savePath = "C:\test\"
        ' 检查保存路径是否存在,不存在则自动创建
        If Dir(savePath, vbDirectory) = "" Then
            MkDir savePath
        End If
        
        Set attachs = Item.Attachments
        For i = attachs.Count To 1 Step -1
            Set currentAttachment = attachs.Item(i)
            ' 更稳妥的PDF后缀判断(兼容大小写)
            If LCase(Right(currentAttachment.FileName, 4)) = ".pdf" Then
                fileName = currentAttachment.FileName
                currentAttachment.SaveAsFile savePath & fileName
                attachs.Remove i ' 直接使用已声明的attachs变量移除附件
            End If
        Next i
        Item.Save ' 确保修改被保存
    End Sub
    
  3. 重新配置规则
    规则配置调整为:

    • 触发条件:收到来自指定测试地址的邮件
    • 执行动作顺序:
      • 运行脚本SaveAttachmentsFromSelectedItemsPDF
      • 标记邮件为已读
      • 移动邮件到ATTACHMENT文件夹

内容的提问来源于stack exchange,提问作者Croque-Monsieur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 01:00:07