Traiter automatiquement pièces jointes
bonjour,
j'aimerai traiter de manière automatique ou semi-automatique des mails qui contiennent plusieurs mails en pièce jointe : chaque jour, je reçois 1 mail avec 26 messages (.msg) joints.
Jusqu'à présent, j'arrive à lister le numéro et la taille de chaque message joint mais je n'arrive pas à accéder au contenu (Body) des messages joints.
Voici mon code actuel (merci developpez.com) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| Private Sub Application_ItemContextMenuDisplay(ByVal CommandBar As Office.CommandBar, ByVal Selection As Selection)
Dim objButton As CommandBarButton
Dim intButtonIndex As Integer
Dim intCounter As Integer
'Test si 1 seul mail est sélectionné
If Selection.Count = 1 Then
'Test si la sélection correspond à un E-mail
If Selection.Item(1).Class = olMail Then
Set objButton = CommandBar.Controls.Add(msoControlButton, , , , True)
With objButton
.Style = msoButtonIconAndCaption
.Caption = "Infos sur le Mail"
.FaceId = 463
.OnAction = "Projet 1.ThisOutlookSession.InfosMail"
End With
End If
End If
End Sub |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| Sub InfosMail()
'---------------------------------------------------------------------------------------
' Procédure : InfosMail
' Auteur : Dolphy35 - http://dolphy35.developpez.com/
' Date : 25/04/2008
' Détail : Macro permettant de parcourir les pièces jointes d'une sélection et affiche
' le nom et la taille de chaque pièce jointe dans une boîte de message
'---------------------------------------------------------------------------------------
'
'Déclarations des objets et variables
Dim objItem As Object
Dim objAttachment As Attachments
Dim myOlApp As New Outlook.Application
Dim myOlExp As Outlook.Explorer
Dim myOlSel As Outlook.Selection
Dim i As Integer
Dim MonTexte As String
'Instancie les objets
Set myOlExp = myOlApp.ActiveExplorer
Set myOlSel = myOlExp.Selection
'Boucle permettant de parcourir les pièces jointes une à une
For Each myItem In myOlSel
'instancie l'objet avec la pièce jointe en cours
Set objAttachment = myItem.Attachments
'Si pièce jointe affichage
If objAttachment.Count > 0 Then
For i = 1 To objAttachment.Count
MonTexte = MonTexte & "PJ" & tmp & i & " > " & MEF_Octet(objAttachment(i).Size) & vbCr
Next i
End If
Next
MsgBox MonTexte
'Vide des objets pour libération de la mémoire
Set objItem = Nothing
Set objAttachment = Nothing
Set myOlApp = Nothing
Set myOlExp = Nothing
Set myOlSel = Nothing
End Sub |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| Public Function MEF_Octet(lgValeur As Long) As String
'---------------------------------------------------------------------------------------
' Procédure : MEF_Octet
' Auteur : Dolphy35 - http://dolphy35.developpez.com/
' Date : 25/04/2008
' Détail : Fonction permettant un affichage en octet, kilo, mega ou giga selon valeur passée en paramètre
'---------------------------------------------------------------------------------------
'
'test si la valeur correspond à l'octet
If (lgValeur / 1024 > 1) Then
lgValeur = lgValeur / 1024
'test si la valeur correspond au kilo
If (lgValeur / 1024 > 1) Then
lgValeur = lgValeur / 1024
'test si la valeur correspond au méga
If (lgValeur / 1024 > 1) Then
lgValeur = lgValeur / 1024
'test si la valeur correspond au giga
If (lgValeur / 1024 > 1) Then
lgValeur = lgValeur / 1024
Else
MEF_Octet = CStr(lgValeur) & " Go" 'charge la valeur convertie en string dans la variable
End If
Else
MEF_Octet = CStr(lgValeur) & " Mo" 'charge la valeur convertie en string dans la variable
End If
Else
MEF_Octet = CStr(lgValeur) & " Ko" 'charge la valeur convertie en string dans la variable
End If
Else
MEF_Octet = CStr(lgValeur) & " Oct" 'charge la valeur convertie en string dans la variable
End If
End Function |
Mon objectif est donc :
- soit d'enregistrer au format TXT l'ensemble des .msg joints (et non pas le message parent) par exemple dans C:/Tmp
- soit de concaténer l'ensemble des contenus des .msg joints et d'enregistrer le résultat par exemple dans C:/Tmp
Merci d'avance pour vos lumières