You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何从Outlook/Exchange通讯簿选取人员并自动填充姓名、邮箱及电话至Excel绩效评审表?

如何从Outlook/Exchange通讯簿选取人员并自动填充姓名、邮箱及电话至Excel绩效评审表?

嘿,这个需求太实用了!之前帮同事做过类似的绩效表,用Excel VBA就能直接调取Outlook通讯录选联系人,自动把姓名、邮箱、电话填到指定单元格里,比下拉框加VLOOKUP灵活多了。我给你整理了一步步的实现方法,照着来就行:

准备工作:启用开发工具

如果你的Excel顶部没显示「开发工具」选项卡,先去开启它:

  • 点击「文件」→「选项」→「自定义功能区」
  • 在右侧勾选「开发工具」,点击确定

步骤1:添加Outlook对象引用

因为要调用Outlook的功能,得先在VBA里绑定Outlook库:

  1. Alt+F11打开VBA编辑器
  2. 点击顶部菜单「工具」→「引用」
  3. 在弹出的列表里找到「Microsoft Outlook XX.X Object Library」(XX.X是你Outlook的版本号,比如Office 365就是16.0),勾选它后点击确定

步骤2:编写VBA宏代码

在VBA编辑器里插入模块,粘贴下面两个宏(分别对应选择经理和员工):

  1. 右键点击左侧工程资源管理器里的你的工作簿名称,选择「插入」→「模块」
  2. 把下面的代码粘贴进去:

选择经理的宏(自动填充经理信息)

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

火山引擎 最新活动