如何从Outlook/Exchange通讯簿选取人员并自动填充姓名、邮箱及电话至Excel绩效评审表?
如何从Outlook/Exchange通讯簿选取人员并自动填充姓名、邮箱及电话至Excel绩效评审表?
嘿,这个需求太实用了!之前帮同事做过类似的绩效表,用Excel VBA就能直接调取Outlook通讯录选联系人,自动把姓名、邮箱、电话填到指定单元格里,比下拉框加VLOOKUP灵活多了。我给你整理了一步步的实现方法,照着来就行:
准备工作:启用开发工具
如果你的Excel顶部没显示「开发工具」选项卡,先去开启它:
- 点击「文件」→「选项」→「自定义功能区」
- 在右侧勾选「开发工具」,点击确定
步骤1:添加Outlook对象引用
因为要调用Outlook的功能,得先在VBA里绑定Outlook库:
- 按
Alt+F11打开VBA编辑器 - 点击顶部菜单「工具」→「引用」
- 在弹出的列表里找到「Microsoft Outlook XX.X Object Library」(XX.X是你Outlook的版本号,比如Office 365就是16.0),勾选它后点击确定
步骤2:编写VBA宏代码
在VBA编辑器里插入模块,粘贴下面两个宏(分别对应选择经理和员工):
- 右键点击左侧工程资源管理器里的你的工作簿名称,选择「插入」→「模块」
- 把下面的代码粘贴进去:
选择经理的宏(自动填充经理信息)
Sub SelectManager() Dim olApp As Outlook.Application Dim olNamespace As Outlook.Namespace Dim olAddrEntry As Outlook.AddressEntry Dim selDialog As Outlook.SelectNamesDialog ' 初始化Outlook对象 Set olApp = New Outlook.Application Set olNamespace = olApp.GetNamespace("MAPI") Set selDialog = olApp.Session.GetSelectNamesDialog ' 限制只能选1个联系人 selDialog.NumberOfRecipientsAllowed = 1 ' 弹出地址选择对话框 If selDialog.Show = True Then Set olAddrEntry = selDialog.Recipients(1).AddressEntry ' 把信息写入对应单元格(这里假设经理姓名在B2,邮箱C2,电话D2,你可以根据自己的表修改单元格位置) Range("B2").Value = olAddrEntry.Name Range("C2").Value = olAddrEntry.GetExchangeUser.PrimarySmtpAddress Range("D2").Value = olAddrEntry.GetExchangeUser.BusinessTelephoneNumber End If ' 释放占用的对象资源 Set olAddrEntry = Nothing Set selDialog = Nothing Set olNamespace = Nothing Set olApp = Nothing End Sub
选择员工的宏(自动填充员工信息)
Sub SelectEmployee() Dim olApp As Outlook.Application Dim olNamespace As Outlook.Namespace Dim olAddrEntry As Outlook.AddressEntry Dim selDialog As Outlook.SelectNamesDialog ' 初始化Outlook对象 Set olApp = New Outlook.Application Set olNamespace = olApp.GetNamespace("MAPI") Set selDialog = olApp.Session.GetSelectNamesDialog ' 限制只能选1个联系人 selDialog.NumberOfRecipientsAllowed = 1 ' 弹出地址选择对话框 If selDialog.Show = True Then Set olAddrEntry = selDialog.Recipients(1).AddressEntry ' 把信息写入对应单元格(这里假设员工姓名在B4,邮箱C4,电话D4,你可以根据自己的表修改单元格位置) Range("B4").Value = olAddrEntry.Name Range("C4").Value = olAddrEntry.GetExchangeUser.PrimarySmtpAddress Range("D4").Value = olAddrEntry.GetExchangeUser.BusinessTelephoneNumber End If ' 释放占用的对象资源 Set olAddrEntry = Nothing Set selDialog = Nothing Set olNamespace = Nothing Set olApp = Nothing End Sub
步骤3:添加按钮绑定宏
回到Excel界面,给经理和员工区域加点击按钮:
- 点击「开发工具」→「插入」,选择「按钮(表单控件)」
- 在经理姓名旁边拖动鼠标画一个按钮,弹出的对话框里选择
SelectManager宏,点击确定,然后把按钮改名为「选择经理」 - 同样的方法,在员工姓名旁边画按钮,绑定
SelectEmployee宏,改名为「选择员工」
测试使用
现在点击「选择经理」按钮,就会弹出Outlook的地址选择对话框,选好联系人后确定,对应的姓名、邮箱、电话就会自动填充到指定单元格里啦!员工的操作同理。
注意:如果选中的联系人没有填写办公电话,对应的单元格会显示为空,这是正常的;另外确保你的Outlook已经登录了公司的Exchange账号,这样才能访问企业通讯簿。
备注:内容来源于stack exchange,提问作者lit




