2015-11-26 2 views
0

У меня есть правило, выполняющееся на входящей почте, которое перемещает элементы с определенной строкой в ​​строке темы в папку. Затем он запускает скрипт, чтобы заменить часть объекта чем-то другим.Изменить входящую тему почты Outlook

Я поставил точки останова в скрипте, чтобы убедиться, что он работает, а не проблема с макросохранением. Он читает тему, но просто не сохранит изменения. Я получил сценарий от кого-то ищет подобный результат

Sub RunAScriptRuleRoutine(MyMail As Outlook.MailItem) 
Dim strID As String 
Dim olNS As Outlook.NameSpace 
Dim olMail As Outlook.MailItem 

strID = MyMail.EntryID 
Set olNS = Application.GetNamespace("MAPI") 
Set olMail = olNS.GetItemFromID(strID) 
' do stuff with olMail, e.g. 
olMail.Subject = Replace(objMail.Subject, "[Jira]", "something else") 
olMail.Save 

Set olMail = Nothing 
Set olNS = Nothing 
End Sub 

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

Public Sub Whatever(Mail As Outlook.MailItem) 
Mail.Subject = "Hello" 
Mail.Save 
End Sub 

Похоже, что я не понимаю метод MailItem.Save, но я не могу его обработать.

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

Любые идеи?

ответ

0

Метод класса MailItem Move перемещает элемент Microsoft Outlook в новую папку и возвращает значение Object, которое представляет элемент, который был перемещен в указанную папку.

Итак, вы должны установить свойство Subject на возвращаемом объекте, а не на исходном.

+0

Так я должен сделать этот шаг как часть сценария? Или я могу задать тему перемещенного элемента после встроенного правила перемещения Outlook? – Matthewiiv

0

Во втором примере, похоже, ничего плохого не происходит.

Для первого примера вам не хватает Option Explicit

, который приведет вас изменить objMail к olMail

olMail.Subject = Replace(olMail.Subject, "[Jira]", "something else")