Sub MoveItems()
Dim Messages As Selection
Dim Msg As MailItem
Dim NS As NameSpace
Set NS = Application.GetNamespace("MAPI")
Set Messages = ActiveExplorer.Selection
If Messages.Count = 0 Then
Exit Sub
End If
For Each Msg In Messages
Msg.Move NS.Folders("Personal Folders").Folders("SavedMail")
Next
End Sub
此代码会将所有电子邮件消息从 Outlook 中当前选定的文件夹移动到另一个文件夹 (SavedMail)。我想编辑代码,以便不使用当前选定的文件夹作为消息来源,而是使用一个硬编码文件夹 - 类似于Set Messages = NS.Folders("Personal Folders").Folders("Moved")
。
我是 VBA 新手,尝试用这个替换 Set Messages 行,结果出现运行时错误“13”:类型不匹配,我认为这是指 Dim Messages 和 Set Messages 命令不匹配。我尝试使用不同的 Dim 定义,但没有成功。我猜懂 VBA 的人会立即找到方法。
答案1
我认为你遇到的问题是
If messages.count = 0 then
一旦定义messages
为文件夹,您就无法对其进行计数 - 它要计算所选邮件项。除非您需要处理此类错误,否则您可以像这样缩短代码 -
Sub MoveItems()
Dim Msg As MailItem
Dim NS As NameSpace
Set NS = Application.GetNamespace("MAPI")
For Each Msg In NS.Folders("Personal Folders").Folders("Moved").Items
Msg.Move NS.Folders("Personal Folders").Folders("SavedMail")
Next
End Sub