VBA форма mailto гиперссылка выход на вопрос клиента - PullRequest
1 голос
/ 27 июля 2011

У меня есть форма поиска адресов электронной почты в листе Excel, которая отлично работает при создании почтовых гиперссылок. они выглядят так ...

enter image description here

Но я бы хотел показать настоящее имя человека, вот так, и у меня есть доступная строка ...

enter image description here

Мой вопрос заключается в том, может ли это быть сделано способом построения ссылки, или это то, что делает почтовый клиент, сопоставляя его из адресной книги? Я предпочел бы тренировать адресную книгу, а не создавать только адреса электронной почты.

дополнительно вот пример того, что у меня есть

Link = "mailto:" & EmpForm.Label10
whoTo = EmpForm.TextBox3 'which I want to use in the TO:whoever
ActiveWorkbook.FollowHyperlink Address:=Link, NewWindow:=True

Ответы [ 2 ]

1 голос
/ 28 июля 2011

Вместо того, чтобы переходить по ссылке из Excel, сознательно удалите эту часть:

ActiveWorkbook.FollowHyperlink Address:=Link, NewWindow:=True

Вы можете создать письмо из Excel. Таким образом, вы можете установить нужные параметры.
Вот пример кода (найден здесь ):

' requires a reference to the Microsoft Outlook 8.0 Object Library    
Sub SendAnEmailWithOutlook()
' creates and sends a new e-mail message with Outlook
Dim OLF As Outlook.MAPIFolder, olMailItem As Outlook.MailItem
Dim ToContact As Outlook.Recipient
    Set OLF = GetObject("", _
        "Outlook.Application").GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
    Set olMailItem = OLF.Items.Add ' creates a new e-mail message
    With olMailItem
        .Subject = "Subject for the new e-mail message" ' message subject
        Set ToContact = .Recipients.Add("name@domain.com") ' add a recipient
        Set ToContact = .Recipients.Add("name@company.com") ' add a recipient
        ToContact.Type = olCC ' set latest recipient as CC
        Set ToContact = .Recipients.Add("name@org.net") ' add a recipient
        ToContact.Type = olBCC ' set latest recipient as BCC
        .Body = "This is the message text" & Chr(13) 
        ' the message text with a line break
        .Attachments.Add "C:\FolderName\Filename.txt", olByValue, , _
            "Attachment" ' insert attachment
'        .Attachments.Add "C:\FolderName\Filename.txt", olByReference, , _
             "Shortcut to Attachment" ' insert shortcut
'        .Attachments.Add "C:\FolderName\Filename.txt", olEmbeddedItem, , _
             "Embedded Attachment" ' embedded attachment
'        .Attachments.Add "C:\FolderName\Filename.txt", olOLE, , _
             "OLE Attachment" ' OLE attachment
        .OriginatorDeliveryReportRequested = True ' delivery confirmation
        .ReadReceiptRequested = True ' read confirmation
        '.Save ' saves the message for later editing
        .Send ' sends the e-mail message (puts it in the Outbox)
    End With
    Set ToContact = Nothing
    Set olMailItem = Nothing
    Set OLF = Nothing
End Sub

Чтобы создать поле получателя, вы можете использовать:

arrTo = Split(whoTo,"@")
whoTo = UCase(arrTo[0]) & " " & UCase(arrTo[1]) & "<" & whoTo & ">"
0 голосов
/ 28 июля 2011

Окно новой почты Outlook покажет вам имя, если адрес электронной почты, на который вы отправляете почту, присутствует в его адресной книге, в противном случае отображается полный адрес электронной почты.

...