Problem mit SentOnBehalfOfName
13.10.2021 09:19:55
Martin
Sub Auslesen()
' open the inbox
Dim ol As Outlook.Application
Dim ns As Namespace
Set ol = New Outlook.Application
Set ns = ol.GetNamespace("MAPI")
Dim inbox As MAPIFolder
Set inbox = ns.Session.Folders("Name des Postfachs").Folders("Posteingang")
Dim outlook_item As Object
Dim Alias As String
For Each outlook_item In inbox.Items
' only look at emails
If outlook_item.Class = olMail Then
Alias = GetAlias(outlook_item, ns)
lz = Cells(65536, 1).End(xlUp).Row
For i = 2 To lz
If Range("A" & i) = Alias Then
Range("M" & i) = "ja"
If outlook_item.UnRead Then
outlook_item.UnRead = False
End If
End If
Next i
End If
Next outlook_item
End Sub
Function GetAlias(outlook_item As Outlook.MailItem, ns As Outlook.Namespace) As String
On Error GoTo err_handler
Dim email_address As String
Dim Alias as String
email_address = outlook_item.SentOnBehalfOfName
' if it's an Exchange format address
If UCase(outlook_item.SenderEmailType) = "EX" Then
' create a recipient
Dim recip As Outlook.Recipient
Set recip = ns.CreateRecipient(outlook_item.SentOnBehalfOfName)
' extract the Alias
Dim user As Outlook.ExchangeUser
Set user = recip.AddressEntry.GetExchangeUser()
Alias = user.Alias
GetAlias = Alias
Exit Function
Else
MsgBox "Für die private email-Absenderadresse " & email_address & " konnten keine Outlookdaten ermittelt werden."
End If
err_handler: MsgBox "Für " & email_address & " konnte kein Alias ermittelt werden"
End Function
Mit SenderEmailAddress anstelle von SentOnBehalfOfName würde es problemlos funktionieren. Viele Mitarbeiter senden aber über die Stellvertreter-Funktion eine Mail "im Auftrag von" für ihre Kollegen, und nur deren Namen interessieren mich dann. Nun kriege ich bei SentOnBehalfOfName nur den displayName geliefert, also z.B. "Meier, Max". Wenn es im Adressbuch noch einen weiteren ähnlichen Eintrag gibt wie z.B. "Meier, Max (München)" dann crasht der Code in GetAlias. Wenn ich "Meier, Max" manuell in eine neue Outlook Mail als Empfänger setze, kommt eine Abfrage, ob ich "Meier, Max" oder "Meier, Max (München)" meine. Das ist wahrscheinlich der Grund, warum der Code crasht. Gibt es eine Möglichkeit, beim Setzen des recipients diese Abfrage zu unterdrücken bzw. automatisch den Eintrag auszuwählen, der exakt dem vorgegebenen Namen entspricht?