2012-09-28 7 views
6

Ich habe VBA zu einem gewissen Grad wurde unter Verwendung mit diesem Code:Wie extrahieren Sie E-Mail-Adressen aus dem Feld "An" in Outlook?

Sub ExtractEmail() 
Dim OlApp As Outlook.Application 
Dim Mailobject As Object 
Dim Email As String 
Dim NS As NameSpace 
Dim Folder As MAPIFolder 
Set OlApp = CreateObject("Outlook.Application") 
' Setup Namespace 
Set NS = ThisOutlookSession.Session 
' Display select folder dialog 
Set Folder = NS.PickFolder 
' Create Text File 
Set fs = CreateObject("Scripting.FileSystemObject") 
Set a = fs.CreateTextFile("c:\mydocuments\emailss.txt", True) 
' loop to read email address from mail items. 
For Each Mailobject In Folder.Items 
    Email = Mailobject.To 
    a.WriteLine (Email) 
Next 
Set OlApp = Nothing 
Set Mailobject = Nothing 
a.Close 
End Sub 

gibt jedoch diese Ausgabe als die Namen der E-Mail-Adressen und nicht die eigentliche E-Mail-Adresse mit den "[email protected]".

Gibt es ein Attribut des Mailobjekts, das es erlaubt, die E-Mail-Adressen und nicht die Namen aus der Textbox zu schreiben.

Dank

Antwort

10

Schauen Sie sich die Sammelobjekt Empfänger für Ihre Mail-Element, mit dem Sie die Adresse erhalten erlauben sollte: http://msdn.microsoft.com/en-us/library/office/ff868695.aspx


aktualisieren 8/10/2017

Suche Zurück zu dieser Antwort, merkte ich, dass ich eine schlechte Sache gemacht habe, indem ich nur irgendwo verlinkt habe und nicht ein bisschen mehr Informationen zur Verfügung stellte.

Hier ist ein Code-Schnipsel aus diesem MSDN Link oben, das zeigt, wie das Objekt Empfänger verwendet werden kann, eine E-Mail-Adresse (Code-Schnipsel in VBA ist) zu erhalten:

Sub GetSMTPAddressForRecipients(mail As Outlook.MailItem) 
    Dim recips As Outlook.Recipients 
    Dim recip As Outlook.Recipient 
    Dim pa As Outlook.PropertyAccessor 
    Const PR_SMTP_ADDRESS As String = _ 
     "http://schemas.microsoft.com/mapi/proptag/0x39FE001E" 
    Set recips = mail.Recipients 
    For Each recip In recips 
     Set pa = recip.PropertyAccessor 
     Debug.Print recip.name &; " SMTP=" _ 
      &; pa.GetProperty(PR_SMTP_ADDRESS) 
    Next 
End Sub 
+1

Dank genau alot, was ich brauchte und auch sehr aktuell – surfer190

+0

Sehr hilfreiche Post! – Neophile