2016-06-01 2 views
0

У меня есть макрос Outlook, который редактирует определенные поля во всех моих контактах. Можно ли автоматически запускать этот макрос для запуска всякий раз, когда создается или сохраняется новый Контакт?Возможно ли запустить макрос Outlook при создании/сохранении нового контакта?

+1

[Outlook: Items.ItemAdd event] (https://msdn.microsoft.com/en-us/library/office/ff869609.aspx) –

ответ

2

Добавьте этот код в ThisOutlookSession модуля:

Private WithEvents objNewContact As Items 

Private Sub Application_Startup() 
    Set objNewContact = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderContacts).Items 
End Sub 

Private Sub objNewContact_ItemAdd(ByVal Item As Object) 
    MsgBox Item.CompanyAndFullName & " added" 
End Sub 

Private Sub objNewContact_ItemChange(ByVal Item As Object) 
    MsgBox Item.CompanyAndFullName & " changed" 
End Sub 

Application_StartUp установит objNewContact, чтобы посмотреть папку контактов при запуске Outlook.
ItemAdd будет срабатывать при сохранении контакта.
ItemChange будет срабатывать при сохранении существующего контакта после его изменения.

В качестве ссылки, предоставляемой условиями @Maciej - Код примера должен быть помещен в модуль класса, а ThisOutlookSession - это модуль класса.

+0

Большое спасибо. Был способен заставить его работать, копируя/вставляя мой существующий макрос в тело ItemAdd. Из любопытства - мог ли я назвать макрос, который был расположен в Модуле 1, изнутри ItemAdd вместо того, чтобы переместить его в ThisOutlookSession? – SeanS

+0

Да, вы можете - до тех пор, пока он определяется как «Публичный», а не «Частный». В моем примере вы просто замените строку 'MsgBox' на что-то вроде' NameOfYourMacro Item' или 'Call NameOfYourMacro (Item)' –

Смежные вопросы