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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 SubMon objectif est donc :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
- 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
Partager