Outlook规则+ VBA:保存附件,然后将邮件移至所选文件夹

时间:2019-07-16 21:25:06

标签: vba outlook move attachment rules

我需要对接收的某些特定邮件使用规则。 我必须将附件保存到特定的文件夹即D:\ TEST),然后将邮件移到附加到Outlook的另一个文件邮箱文件中的特定子文件夹中。

我找到并适应了我的代码,但是Outlook规则“麻木”,并且无法更改步骤执行的规则顺序:

如果味精命中规则:

将MSG移至特定文件夹

然后运行脚本

因此,总而言之,脚本没有找到MSG,因为它是按规则移动的(我找不到反向顺序获取的选项:

如果味精命中规则:

运行脚本

然后将MSG移至特定文件夹 因此解决方案是编写脚本并在触发规则时附加。

Public Sub SaveAttach(Item As Outlook.MailItem)

If Item.Attachments.Count > 0 Then

 Dim objAttachments As Outlook.Attachments
 Dim lngCount As Long
 Dim strFile As String
 Dim sFileType As String
 Dim strFolderpath As String
 Dim i As Long
 Dim myDestFolder As Outlook.Folder
 Set myDestFolder = myInbox.Folders("Mails").Folders("Exported")

 Set objAttachments = Item.Attachments
     lngCount = objAttachments.Count
   For i = lngCount To 1 Step -1
     strFile = objAttachments.Item(i).FileName
     strFolderpath = "D:\TEMP\"
     strFile = strFolderpath & strFile
     objAttachments.Item(i).SaveAsFile strFile
   Next i

Item.Move myDestFolder

End If
End Sub

将上面的代码放到ThisOutlookSession中,然后连接到规则“运行脚本”是可行的,但是如何在上面扩展此代码以将我提取的附件的MSG移动到I.E中的另一个Outlook子文件夹中。邮件\导出\?

编辑:

添加的行

将myDestFolder设置为Outlook.Folder

设置myDestFolder = myInbox.Folders(“邮件”).Folders(“已导出”)

Item.Move myDestFolder

但是仍然有些错误,在这种模式下VBA(作为规则的一部分运行脚本)不运行调试并且看不到错误消息,这是行不通的(我只能将msgbox设置为“我在这里”以跟踪脚本的哪一部分)不会工作:/

一棵文件树看起来像这样

1个收件箱(DefaultIncomingMailsFile.ost(IMAP))

2封邮件(LocalFile.pst)

2a已导出(“邮件”中的子文件夹,在提取附件后应将邮件移动到该子文件夹中)

1 个答案:

答案 0 :(得分:0)

  

但是如何在上面扩展此代码以将我提取的附件的MSG移动到I.E中的另一个Outlook子文件夹。邮箱\完成\?

您需要使用MailItem类的Move方法,将Microsoft Outlook项目移动到新文件夹。

Public Sub SaveAttach(Item As Outlook.MailItem)

  If Item.Attachments.Count > 0 Then
   Dim objAttachments As Outlook.Attachments
   Dim lngCount As Long
   Dim strFile As String
   Dim sFileType As String
   Dim strFolderpath As String
   Dim i As Long

   Set objAttachments = Item.Attachments
   lngCount = objAttachments.Count
   For i = lngCount To 1 Step -1
     strFile = objAttachments.Item(i).FileName
     strFolderpath = "D:\TEMP\"
     strFile = strFolderpath & strFile
     objAttachments.Item(i).SaveAsFile strFile
   Next i

   Item.Move yourTargetFolder

  End If
End Sub