vba - VB 宏只移动了我已读邮件的一半
问题描述
我在 myOutlook 中有一个宏,它将已读邮件从收件箱移动到名为“已读”的文件夹中。这是代码:
Private Sub no_Click()
Unload Me
End Sub
Private Sub yes_Click()
On Error Resume Next
Set oOutlook = CreateObject("Outlook.Application")
Set oNameSpace = oOutlook.GetNamespace("MAPI")
Set oFolderSrc = oNameSpace.GetDefaultFolder(olFolderInbox)
Set oFolderDst = oFolderSrc.Folders("Read")
Set oFilteredItems = oFolderSrc.Items.Restrict("[UnRead] = False")
For Each oMessage In oFilteredItems
oMessage.Move oFolderDst
Next
End Sub
但是,当我运行宏时,它只复制了我一半的邮件。示例:我的收件箱中有 500 封邮件。当我运行宏时,它会在我的收件箱中留下 250 封邮件。当我再次运行它时,它会留下 125 封邮件,等等。
我在这里做错了什么?
解决方案
试试这个:
For index = oFilteredItems.Count to 1 Step -1
oFilteredItems.Item(index).Move oFolderDst
Next
我怀疑被移动的项目搞砸了For Each
推荐阅读
- azure - Azure 诊断设置(预览版)
- svelte - 如何使用 SCSS 在 svelte 中拥有多个 css 包
- python - AWS 实例(Jupyter 笔记本)停止响应
- mysql - 移动值并在传输后删除它们
- javascript - 如何将多个钩子状态渲染到我的 JSX 中?
- azure - 无法获得将 SPFX webpart 与 Azure Devops 连接的同意
- firebase - URL 重写会使 Firebase 云功能响应来自我的自定义域吗?
- amazon-web-services - 如何通过 API 检索 AWS RDS 数据库实例中的所有数据库列表?
- python - websocket握手期间的Django-channels错误:意外响应代码:404本地
- localdb - 是 x86 机器的 sqllocaldb.msi 2019