【发布时间】:2020-06-23 07:52:01
【问题描述】:
如果附件文件名与字符串匹配(例如,“asdfqwerty”),我正在尝试编写一个宏来移动电子邮件。电子邮件将从我的收件箱移动到我的收件箱下的文件夹“测试”。
很遗憾,不能选择使用兑换。
感谢任何帮助!
编辑 这是我根据 Dmitry 的提示更新的代码。我现在在最后一个 Next 上收到“类型不匹配”错误,不知道为什么:
Sub SaveOlAttachments()
Dim olFolder As MAPIFolder
Dim olFolder2 As MAPIFolder
Dim msg As mailItem
Set olFolder = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
Set olFolder2 = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Folders("Test")
For Each msg In olFolder.Items
If msg.Class = 43 Then
If msg.Attachments.Count > 0 Then
If Left$(msg.Attachments(1).FileName, 10) = "asdfqwerty" Then
msg.Move (oldFolder2)
End If
End If
End If
Next
End Sub
【问题讨论】:
-
在操作(item.Move)组集合时要小心
For Each,因为这会导致错误。使用For n = olFolder.Items.Count -1 to 0 Step -1并反向迭代以保留Items索引。否则,如果您移动第一个元素,则前第二个元素将首先获得。