Vba 是否可以在创建/保存新联系人时运行Outlook宏?
我有一个Outlook宏,可以编辑我所有联系人中的某些字段。是否可以在创建/保存新联系人时自动触发此宏运行?将此代码添加到Vba 是否可以在创建/保存新联系人时运行Outlook宏?,vba,outlook,macros,Vba,Outlook,Macros,我有一个Outlook宏,可以编辑我所有联系人中的某些字段。是否可以在创建/保存新联系人时自动触发此宏运行?将此代码添加到ThisOutlookSession模块: Private WithEvents objNewContact As Items Private Sub Application_Startup() Set objNewContact = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderContacts
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
应用程序启动时
将设置objNewContact,以便在启动Outlook时查看联系人文件夹。保存联系人时,
ItemAdd
将触发。ItemChange
将在更改现有联系人后保存该联系人时触发
正如@Maciej提供的链接所述-示例代码必须放在类模块中,并且ThisOutlookSession是一个类模块。将此代码添加到
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
应用程序启动时
将设置objNewContact,以便在启动Outlook时查看联系人文件夹。保存联系人时,
ItemAdd
将触发。ItemChange
将在更改现有联系人后保存该联系人时触发
正如@Maciej提供的链接所述-示例代码必须放在一个类模块中,而这个outlooksession是一个类模块。非常感谢。通过将现有宏复制/粘贴到ItemAdd的主体中,可以使其正常工作。出于好奇-我是否可以从ItemAdd内部调用位于模块1中的宏,而不是将其移动到此OutlookSession?是的,您可以-只要它定义为
Public
而不是Private
。在我的示例中,您只需将MsgBox
行替换为NameOfYourMacro项目
或callnameofYourMacro(项目)
非常感谢。通过将现有宏复制/粘贴到ItemAdd的主体中,可以使其正常工作。出于好奇-我是否可以从ItemAdd内部调用位于模块1中的宏,而不是将其移动到此OutlookSession?是的,您可以-只要它定义为Public
而不是Private
。在我的示例中,您只需将MsgBox
行替换为NameOfYourMacro项目
或callnameofYourMacro(项目)