我在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选择了电子邮件,我希望能够检索
\服务器\ home目录\麦
并使用“jimmy”作为我的VARIABLE。 如果可以的话,我们将非常感谢任何帮助。
答案 0 :(得分: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