Фон
Я бы хотел, чтобы Outlook 2010 автоматически перемещал электронные письма в папки, обозначенные именем человека. Например:
- Нажмите Правила
- Нажмите Управление правилами и оповещениями
- Нажмите Новое правило
- Выберите «Переместить сообщения от кого-либо в папку»
- Нажмите кнопку "Далее
Отображается следующий диалог:
проблема
Следующая часть обычно выглядит следующим образом:
- Нажмите
people or public group
- Выберите желаемого человека
- Нажмите
specified
- Выберите нужную папку
Вопрос
Как бы вы автоматизировали эти проблемные ручные задачи? Вот логика для нового правила, которое я хотел бы создать:
- Получите новое сообщение.
- Извлеките имя отправителя.
- Если он не существует, создайте новую папку в папке «Входящие»
- Переместить новое сообщение в папку, назначенную имени этого человека
Я думаю, что для этого потребуется макрос VBA.
Ссылки по теме
- http://www.experts-exchange.com/Software/Office_Productivity/Groupware/Outlook/A_420-Extending-Outlook-Rules-via-Scripting.html
- http://msdn.microsoft.com/en-us/library/office/ee814735.aspx
- http://msdn.microsoft.com/en-us/library/office/ee814736.aspx
- https://stackoverflow.com/questions/11263483/how-do-i-trigger-a-macro-to-run-after-a-new-mail-is-received-in-outlook
- http://en.kioskea.net/faq/6174-outlook-a-macro-to-create-folders
- http://blogs.iis.net/robert_mcmurray/archive/2010/02/25/outlook-macros-part-1-moving-emails-into-personal-folders.aspx
Обновление № 1
Код может напоминать что-то вроде:
Public WithEvents myOlApp As Outlook.Application
Sub Initialize_handler()
Set myOlApp = CreateObject("Outlook.Application")
End Sub
Private Sub myOlApp_NewMail()
Dim myInbox As Outlook.MAPIFolder
Dim myItem As Outlook.MailItem
Set myInbox = myOlApp.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
Set mySenderName = myItem.SenderName
On Error GoTo ErrorHandler
Set myDestinationFolder = myInbox.Folders.Add(mySenderName, olFolderInbox)
Set myItems = myInbox.Items
Set myItem = myItems.Find("[SenderName] = " & mySenderName)
myItem.Move myDestinationFolder
ErrorHandler:
Resume Next
End Sub
Обновление № 2
Разделите код следующим образом:
Отправил тестовое сообщение и ничего не произошло. Инструкции по фактическому запуску сообщения при поступлении нового сообщения немного освещают детали (например, не упоминается ни о ThisOutlookSession
, ни о том, как его использовать).
Спасибо.