Как создать сценарий для перемещения текущей активной электронной почты в папке «Входящие» в другую папку в Outlook 2007 - PullRequest
3 голосов
/ 21 апреля 2009

Иногда я получаю письма, которые хочу сохранить, но переместить их в соответствующую папку может быть затруднительно. Как я могу выполнить скрипт, который переместит (например, с помощью C-S-v) электронное письмо, которое я просматриваю, в определенную папку, например, «буфер»?

Я использую Outlook 2007.

спасибо.


EDIT: нет никаких критериев, которые могли бы быть созданы, чтобы автоматизировать этот процесс, как с помощью правила. это всего лишь суждение, которое я делаю, когда смотрю на него.

Ответы [ 3 ]

5 голосов
/ 21 ноября 2011

Этот код может работать лучше.

В вашем коде 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
2 голосов
/ 21 апреля 2009

Вот код, который я использую.

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
1 голос
/ 21 апреля 2009

Инструменты -> Правила и оповещения

Затем создайте новое правило, сообщающее всем сообщениям, которые соответствуют любым критериям, которые будут удалены / помечены как прочитанные / перемещены в папку / любую комбинацию из них.

Edit: Если вам не нужно правило / вы не можете создать подходящее правило, вы можете создать макрос (Инструменты -> Макрос), чтобы переместить его в папку, а затем связать с ярлыком.

...