Ich habe ein Outlook-Makro, das bestimmte Felder in allen meinen Kontakten bearbeitet. Ist es möglich, dieses Makro automatisch auszulösen, wenn ein neuer Kontakt erstellt/gespeichert wird?Kann ein Outlook-Makro ausgeführt werden, wenn ein neuer Kontakt erstellt/gespeichert wird?
Antwort
diesen Code zum ThisOutlookSession
Modul hinzufügen:
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
wird objNewContact stellen Sie den Kontakteordner zu beobachten, wenn Sie Outlook starten.
ItemAdd
wird ausgelöst, wenn Sie den Kontakt speichern.
wird ausgelöst, wenn Sie einen vorhandenen Kontakt speichern, nachdem Sie ihn geändert haben.
Wie der von @Maciej angegebene Link angibt - Der Beispielcode muss in einem Klassenmodul platziert werden, und ThisOutlookSession ist ein Klassenmodul.
Vielen Dank. War in der Lage, es durch Kopieren/Einfügen meines vorhandenen Makros in den Körper von ItemAdd arbeiten zu lassen. Aus Neugier - hätte ich das Makro, das sich in Modul1 befand, von ItemAdd aus aufrufen können, anstatt es in ThisOutlookSession zu verschieben? – SeanS
Ja, das könnte man - solange es als 'Public' und nicht als' Private' definiert ist. In meinem Beispiel würden Sie einfach die Zeile "MsgBox" durch etwas wie "NameOfYourMacro Item" oder "Call NameOfYourMacro (Item)" ersetzen –
[Outlook: Items.ItemAdd Ereignis] (https://msdn.microsoft.com/en-us/library/office/ff869609.aspx) –