如何创建脚本以将收件箱中当前活动的电子邮件移动到Outlook 2007中的另一个文件夹

时间:2009-04-21 15:33:10

标签: vba outlook outlook-2007 outlook-vba

我有时会收到我想要保留的电子邮件,但将它们移动到相应的文件夹可能会非常痛苦。我怎样才能执行一个脚本,将我正在查看的电子邮件(如使用C-S-v)移动到某个名为“buffer”的文件夹中?

我正在使用Outlook 2007。

感谢。


编辑: 没有任何标准可以像通过规则那样自动化这个过程。它只是我在盯着它时做出的判断。

3 个答案:

答案 0 :(得分:5)

此代码可能效果更好。

在您的代码中,objFolder可能等于Nothing,但您继续执行该过程。此外,For Each循环假定每个项目都是邮件项目。

Sub MoveSelectedMessagesToFolder()
  Dim objNS As Outlook.NameSpace
  Dim objFolder As Outlook.MAPIFolder
  Dim obj As Object
  Dim msg As Outlook.mailItem

  Set objNS = Application.GetNamespace("MAPI")
  On Error Resume Next
  Set objFolder = objNS.Folders.item("Personal Folders").Folders.item("Buffer")
  On Error GoTo 0

  If objFolder Is Nothing Then
    MsgBox "This folder doesn't exist!", vbOKOnly + vbExclamation, "INVALID FOLDER"
    Exit Sub
  End If

  For Each obj In ActiveExplorer.Selection
    If TypeName(obj) = "MailItem" Then
      Set msg = obj
      msg.Move objFolder
    End If
  Next obj

End Sub

答案 1 :(得分:2)

这是我正在使用的代码。

Sub MoveSelectedMessagesToFolder()
'Originally written by Chewy Chong
'Taken from http://verychewy.com/archive/2006/04/12/outlook-macro-to-move-an-email-to-folder.aspx
'Thanks Chewy!
'Ken
On Error Resume Next
    Dim objFolder As Outlook.MAPIFolder, objInbox As Outlook.MAPIFolder
    Dim objNS As Outlook.NameSpace, objItem As Outlook.MailItem

    Set objNS = Application.GetNamespace("MAPI")
    Set objInbox = objNS.GetDefaultFolder(olFolderInbox)
    'For the "Item" portion, I used the name of the folder exactly as it appear in the ToolTip when I hover over it.
    Set objFolder = objNS.Folders.Item("Personal Folders").Folders.Item("Buffer")

'Assume this is a mail folder

    If objFolder Is Nothing Then
        MsgBox "This folder doesn't exist!", vbOKOnly + vbExclamation, "INVALID FOLDER"
    End If

    If Application.ActiveExplorer.Selection.Count = 0 Then
        'Require that this procedure be called only when a message is selected
        Exit Sub
    End If
    For Each objItem In Application.ActiveExplorer.Selection
        If objFolder.DefaultItemType = olMailItem Then
            If objItem.Class = olMail Then
                objItem.Move objFolder
            End If
        End If
    Next

答案 2 :(得分:1)

工具 - >规则&警报

然后创建一个新规则,告诉所有符合要删除/标记为已读/移动到文件夹/其中任意组合的标准的邮件。

修改 如果您不想要规则/不能制作适合的规则,您可以创建一个宏(工具 - >宏)将其移动到文件夹,然后将其绑定到快捷方式。