【发布时间】:2015-05-11 03:41:18
【问题描述】:
我有一个我组织中所有员工的员工 ID 列表。我希望 Excel VBA 代码获取详细信息,例如名字、姓氏、指定联系人# 和部门。
别名是员工 ID。因此,代码应将员工 ID 作为别名,并在 Outlook 中搜索上述相应的详细信息。
我在网上找到了一个宏,修改成我的要求:
Sub tgr()
Dim appOL As Object
Dim oGAL As Object
Dim oContact As Object
Dim oUser As Object
Dim UserIndex As Long
Dim i As Long
Dim j As Integer
Set appOL = CreateObject("Outlook.Application")
Set oGAL = appOL.GetNamespace("MAPI").AddressLists("/Name of the Distribution List/").AddressEntries
On Error Resume Next
For j = 2 To Application.WorksheetFunction.CountA(Columns(1))
For i = 1 To oGAL.Count
Set oContact = oGAL.Item(i)
If oContact.AddressEntryUserType = 0 Then
Set oUser = oContact.GetExchangeUser
If UCase(oUser.FirstName) = UCase(Range("A" & j).Value) And UCase(oUser.LastName) = UCase(Range("B" & j).Value) Then
Range("c" & j).Value = oUser.Alias
Range("D" & j).Value = oUser.JobTitle
Range("E" & j).Value = oUser.Department
Range("F" & j).Value = oUser.ManagerName
i = oGAL.Count
End If
End If
Next i
Next j
Set oGAL = Nothing
Set oContact = Nothing
Set oUser = Nothing
End Sub
代码有效,但问题是它每次都检查地址列表中的所有项目以搜索每个项目。这需要更多时间。
有没有办法通过广泛搜索而不是查看地址列表中的每个项目并进行比较来简化它。 Addresslist.find 之类的东西。好吧,只有在没有 FIND 属性的联系人文件夹中搜索地址列表时,属性查找才有效。
【问题讨论】:
-
从
Global Address List或可从 Outlook 或 AD 访问的联系人文件夹中提取详细信息?您需要在 Contacts/AD 中指定 Employee ID 的关联方式。如果您尝试了一些编码来实现,我们将不胜感激。 -
不清楚需要在哪里搜索联系人...
-
感谢您的快速回复。不幸的是,我希望代码在我没有外部电子邮件访问的工作场所工作。所以我无法获取代码。我想要的只是一个简单的代码来使用别名搜索 GAL,当找到结果时检索名字、姓氏、职务、部门和经理。我知道要求太多,但我一直在尝试找到一种方法来做到这一点。我在网上找到的代码很少,但所有代码都使用除别名之外的所有其他字段进行搜索。
-
然后按照 Patrick 的建议走 Outlook 和 GAL 路线,看起来在vbaexpress.com/kb/getarticle.php?kb_id=222上有一个完整的示例代码用于您的场景