Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 是否可以在创建/保存新联系人时运行Outlook宏?_Vba_Outlook_Macros - Fatal编程技术网

Vba 是否可以在创建/保存新联系人时运行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

我有一个Outlook宏,可以编辑我所有联系人中的某些字段。是否可以在创建/保存新联系人时自动触发此宏运行?

将此代码添加到
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(项目)