2015-10-16 1 views
0

J'utilise le script BlueDevilFan VBA pour afficher les en-têtes Internet d'un e-mail dans Outlook 2013. J'ai essayé de modifier la VBA de sorte qu'il ne sort que le « à » ou « pour » adresse et rejette tout autre texte,Comment extraire l'adresse 'for'/'to' de l'en-tête dans Outlook 2007+ en utilisant VBA Script

est Ci-dessous le script VBA:

Sub ViewInternetHeader() 
    Dim olItem As Outlook.MailItem, olMsg As Outlook.MailItem 
    Dim strheader As String 

    For Each olItem In Application.ActiveExplorer.Selection 
     strheader = GetInetHeaders(olItem) 

     Set olMsg = Application.CreateItem(olMailItem) 
     With olMsg 
      .BodyFormat = olFormatPlain 
      .Body = strheader 
      .Display 
     End With 
    Next 
    Set olMsg = Nothing 
End Sub 

Function GetInetHeaders(olkMsg As Outlook.MailItem) As String 
    ' Purpose: Returns the internet headers of a message.' 
    ' Written: 4/28/2009' 
    ' Author: BlueDevilFan' 
    ' http://techniclee.wordpress.com/ 
    ' Outlook: 2007' 
    Const PR_TRANSPORT_MESSAGE_HEADERS = "http://schemas.microsoft.com/mapi/proptag/0x007D001E" 
    Dim olkPA As Outlook.PropertyAccessor 
    Set olkPA = olkMsg.PropertyAccessor 
    GetInetHeaders = olkPA.GetProperty(PR_TRANSPORT_MESSAGE_HEADERS) 
    Set olkPA = Nothing 
End Function 

J'ai essayé quelque chose comme je voudrais utiliser dans le mot à trouver et supprimer un certain contenu, mais ne peut pas le faire fonctionner dans Outlook!

Sub CleanUp() 
With Selection 
.HomeKey Unit:=wdStory 
With .Find 
.ClearFormatting 
.Replacement.ClearFormatting 
.Text = "(\To: """)" 
.Replacement.Text = "" 
.Forward = True 
.Wrap = wdFindContinue 
.Format = False 
.MatchCase = False 
.MatchWholeWord = False 
.MatchAllWordForms = False 
.MatchSoundsLike = False 
.MatchWildcards = True 
.Execute Replace:=wdReplaceAll 
.Text = "(\To: """)" 
.Execute Replace:=wdReplaceAll 
End With 
End With 
End Sub 

Répondre

0

vous pouvez juste clairement le texte du corps, puis ajouter le vers et à partir-à-dire l'expéditeur

Sub ViewInternetHeader() 
    Dim olItem As Outlook.MailItem, olMsg As Outlook.MailItem 


    For Each olItem In Application.ActiveExplorer.Selection 


     Set olMsg = Application.CreateItem(olMailItem) 
     olMsg.BodyFormat = olFormatPlain 
     olMsg.Body = "" 
     olMsg.Body = olItem.To & Chr(13) & olItem.Sender 
     olMsg.Display 
    Next 
    Set olMsg = Nothing 
End Sub 
+0

Cela ne veut pas travailler, jette erreur sur « variable bloc non définie » en ligne: olMsg.Body = olMsg.To & Chr (13) & olMsg.Sender – nickrenwick

+0

@nickrenwick Correction, l'expéditeur et à venir de olItem – Sorceri

0

Pourquoi avez-vous besoin d'extraire les adresses des en-têtes? semblent juste boucle à travers tous les destinataires de la collection MailItem.Recipients et si Recipient.Type = olTo, lisez la propriété Recipient.Address/

+0

Les e-mails en question sont tous les alias «filtrage dans une boîte aux lettres, car ils sont alias» le destinataire principal affichera toujours le nom de la boîte aux lettres et pas nécessairement à quoi l'email a été envoyé. – nickrenwick

+0

Ok. Alors, quel est le problème d'analyse de la valeur de la propriété PR_INTERNET_MESSAGE_HEADERS? –