【问题标题】:VBA Outlook 2010 retrieving information from Active DirectoryVBA Outlook 2010 从 Active Directory 中检索信息
【发布时间】:2020-06-24 04:51:54
【问题描述】:

我在 Outlook 2010 中使用 VBA,并尝试创建一个函数,该函数将从 Active Directory 中检索选定的用户主文件夹路径。

以下代码是一个包含保存目的地的简单弹出窗口。

Sub SaveSelected()
'Declaration
Dim myItems, myItem, myAttachments, myAttachment
Dim myOrt As String
Dim myOLApp As New Outlook.Application
Dim myOlExp As Outlook.Explorer
Dim myOlSel As Outlook.Selection
Dim objFSO As Object
Dim intCount As Integer

'Ask for destination folder
myOrt = InputBox("Destination", "Save Attachments", "\\server\home\VARIABLE\")
End Sub

我希望 VARIABLE 来自 AD,具体取决于当前选择的电子邮件。
例如,我收到了来自 Jimmy@home.com 的电子邮件,然后我选择了来自 jimmy@home.com 的电子邮件,我希望能够检索

\server\homedirectory\jimmy

并使用“jimmy”作为我的变量。 如果这是可能的任何帮助将不胜感激。

【问题讨论】:

    标签: vba outlook active-directory


    【解决方案1】:

    以下代码有效

     

    Sub GetSelectedItems()
    
     Dim myOlExp As Outlook.Explorer
     Dim myOlSel As Outlook.Selection
     Dim mySender As Outlook.AddressEntry
     Dim oMail As Outlook.MailItem
     Dim oAppt As Outlook.AppointmentItem
     Dim oPA As Outlook.propertyAccessor
     Dim strSenderID As String
     Dim myOrt As String
     Dim user As String
    
     Const PR_SENT_REPRESENTING_ENTRYID As String ="http://schemas.microsoft.com/mapi/proptag/0x00410102"
    
     Set myOlExp = Application.ActiveExplorer
     Set myOlSel = myOlExp.Selection
    
    
     For x = 1 To myOlSel.Count
     If myOlSel.item(x).Class = OlObjectClass.olMail Then
     ' For mail item, use the SenderName property.
     Set oMail = myOlSel.item(x)
    
    
     ElseIf myOlSel.item(x).Class = OlObjectClass.olAppointment Then
     ' For appointment item, use the Organizer property.
     Set oAppt = myOlSel.item(x)
    
     Else
    
     Set oPA = myOlSel.item(x).propertyAccessor
     strSenderID = oPA.GetProperty(PR_SENT_REPRESENTING_ENTRYID)
     Set mySender = Application.Session.GetAddressEntryFromID(strSenderID)
    
     End If
     Next x
    
    
    Set objConnection = CreateObject("ADODB.Connection")
    Set objCommand = CreateObject("ADODB.Command")
    
    objConnection.Open "Provider=ADsDSOObject;"
    objCommand.ActiveConnection = objConnection
    
    strDomainName = "ou=company,dc=mydc,dc=com"
    strUserCN = oMail.SenderName & ""
    
    objCommand.CommandText = "<LDAP://" & strDomainName & ">;(&
    (objectCategory=person)(objectClass=user)(cn=" & strUserCN &
    "));samAccountName;subtree"
    
    Set objRecordSet = objCommand.Execute
    
    If Not objRecordSet.EOF Then
    
    user = objRecordSet.Fields("samAccountName")
    
    myOrt = InputBox("Destination", "Save Attachments", "\\server\home\" &user & "")
    
    
    End If
    
    objConnection.Close
    Set objRecordSet = Nothing
    Set objConnection = Nothing
    Set objCommand = Nothing
    
    'free variables
    Set myItems = Nothing
    Set myItem = Nothing
    Set myAttachments = Nothing
    Set myAttachment = Nothing
    Set myOLApp = Nothing
    Set myOlExp = Nothing
    Set myOlSel = Nothing
    Set user = Nothing
    
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-07
      • 2016-09-17
      • 1970-01-01
      • 2010-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多