2015-12-02 3 views
0

После получения электронной почты я хочу извлечь имя отправителя в тело электронной почты, чтобы избежать опечаток.Извлечение Имя отправителя

Мне удалось с именем и фамилией, но я не могу извлечь и отобразить только имя.

Вот код:

Sub Dodanie_imienia() 
On Error GoTo brak_aktywnego 
Dim objItem As MailItem: Set objItem = Application.ActiveExplorer.Selection.Item(1) 
On Error GoTo 0 
Dim objInsp As Outlook.Inspector: Set objInsp = objItem.GetInspector 
Dim objDoc As Object: Set objDoc = objInsp.WordEditor 'Word.Document 
Dim objWord As Object: Set objWord = objDoc.Application 'Word.Application 
Dim objSel As Object: Set objSel = objWord.Selection 'Word.Selection 
Dim objItem2 As Object: Set objItem2 = Application.ActiveExplorer.Selection.Item(1) 
Dim tekst$: tekst = "Hi " & objItem2.SenderName & "," & vbNewLine & vbNewLine 

objSel.TypeText tekst 

Exit Sub 
brak_aktywnego: 
If Err.Number = 91 Then _ 
MsgBox "Utwórz wiadomość do edycji.", vbExclamation, "LB" Else _ 
MsgBox Err.Number & " " & Err.Description, vbExclamation, "LB" 
End Sub 

ответ

0

Просто замените эту строку:

Dim tekst$: tekst = "Hi " & Split(objItem2.SenderName)(0) & "," & vbNewLine & vbNewLine 
0

Почему вы предполагаете, есть первое имя и фамилия? Все, что вы получаете - это отображаемое имя - это может быть только адрес электронной почты или все, что хотел показать отправитель. Разумеется, вы можете свободно анализировать отображаемое имя, предполагая, что оно будет в формате «первый последний» или «последний, первый». Или «первый средний последний». Или любой другой формат.

В случае отправителя Exchange вы можете, конечно, получить объект AddressEntry от MailItem.Sender и проверить, не AddressEntry.GetExchangeUser. Если у вас есть действительный объект, вы можете использовать ExchangeUser.FirstName и ExchangeUser.LastName.

Смежные вопросы