1

我在 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

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

\服务器\主目录\吉米

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

在此处输入图像描述

4

1 回答 1

0

以下代码有效

 

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
于 2012-04-25T13:48:59.293 回答