VBA Outlook 2010 retrieving information from Active Directory

拈花ヽ惹草 提交于 2019-12-11 11:20:07

问题


I’m using VBA in Outlook 2010 and I’m trying to create a function that will retrieve a selected user Home folder path from Active Directory.

The following code is a simple pop up that has the saving destination.

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

I want the VARIABLE to come from AD depending on the currently selected email.
for example I received an email from Jimmy@home.com and then I select the email from jimmy@home.com, I want to be able to retrieve

\server\homedirectory\jimmy

and use "jimmy" as my VARIABLE. If this is possible any help would be greatly appreciated.


回答1:


THe follow code works

 

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


来源:https://stackoverflow.com/questions/10279045/vba-outlook-2010-retrieving-information-from-active-directory

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!