VBA - 而不是 ActiveExplorer.Selection 设置文件夹,而是明确设置文件夹路径

VBA - 而不是 ActiveExplorer.Selection 设置文件夹,而是明确设置文件夹路径
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 

相关内容