' OUTLOOK 2003
'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'++++ A0 --- PARCOURIR INBOX à la recherche de MAILS
'++++ A1 ---- restriction : date/heure du mail
'++++ A2 ---- restriction : expéditeur du mail
'++++ A3 --- ARCHIVAGE DES MAILS après exécurtion des restrictions
'++++
'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'http://www.developpez.net/forums/d659803/logiciels/microsoft-office/outlook/
' vba-outlook/sauvegarder-selection-demail-specification-repertoire/
Sub ParcourirInbox()
'adapté au départ du code d'olivier LEBEAU(développez.net)
' ************************ Déclaration des Objets et variables
Dim MonApply As Outlook.Application
Dim MonMail As Outlook.MailItem
Dim MonNSpace As Outlook.NameSpace
Dim FldDossier As Outlook.MAPIFolder
'
************************* Instance des Objets
Set MonApply = Outlook.Application 'Application Outlook
Set MonNSpace = MonApply.GetNamespace("MAPI") 'Banque MAPI
Set FldDossier = MonNSpace.GetDefaultFolder(olFolderInbox) 'boîte de réception
' ************************* Declare VARIABLES pour " JOUR D'ANALYSE..." Dim JourneeAnalyse As String
Dim today
Dim Jour As String, Mois As String, Annee As String
Annee = Year(Now)
Mois = Month(Now)
Jour = Day(Now)
today = Jour & "-" & Mois & "-" & Annee
' ************************ Définitions pour restrictions "période de réception"
JourneeAnalyse = Format(DateAdd("h", 6, today), "dd-mm-yy") 'renvoie today +6heures(du jour suivant)
JourneeDebut = "11/05/2009 08:00:00"
JourneeFin = "12/05/2009 02:00:00"
JourneeAnalyseDebut = Format(DateAdd("h", 6, today), "dd/mm/yyyy hh:mm:ss")
JourneeAnalyseFin = Format(DateAdd("h", 30, today), "dd/mm/yyyy hh:mm:ss")
'_____________________________________________________________________________________________________
'++++++ A0 ---- PARCOURIR INBOX à la recherche de MAILS
'______________________________________________________________________________________________________
For Each MonMail In FldDossier.Items
' ************************* définit date/heure/nom des mails d'origine présents inbox
NomMailOrigine = Format(MonMail.ReceivedTime, "dd-mm-yyyy hh-mm") & "_" & MonMail.Subject
'''========= définit le répertoire de sauvegarde sur le serveur "U"
Dim Chemin8 As String
Chemin8 = "D:\Mails-reçus-T-" & JourneeAnalyse
If Dir(Chemin8, vbDirectory + vbHidden) = "" Then MkDir Chemin8
'...si le DOSSIER n'existe pas,le créer
ChDIr Chemin8
'______________________________________________________________________________________________________
'+++++++ A2 ----- RESTRICTION ::::::::::::::: fonction de l'expéditeur du MAIL
'______________________________________________________________________________________________________[/COLOR]
If MonMail.SenderEmailAddress = "capri@xxxxxxxxx.be" Then
'======'Ici on supprime les caractères non autorisé dans les noms de fichiers
PathNomMailOrigine = Chemin8 & "reçu_" & Left _
(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace( _
NomExport, "\", ""), "/", ""), ":", ""), "*", ""), "?", ""), "<", ""), ">", ""), "|", ""), ".", ""), """", ""), _
vbTab, ""), Chr(7), ""), 160) & ".Msg"
'===== Ici évite d'écraser les messages identiques , donc ajouté une incrémentation automatique
'===== PAS UTILE pour nos besoins
''' n = 1
''' MemPath = PathNomMailOrigine
''' While Dir(PathNomMailOrigine) <> ""
''' MsgBox "Le fichier " & vbCr & PathNomMailOrigine & vbCr & "existe déjà", vbInformation
''' PathNomMailOrigine = Left(MemPath, Len(MemPath) - 4) & "(" & n & ")" & ".msg"
''' n = n + 1
''' Wend
'______________________________________________________________________________________________________
'A1 ========= RESTRICTION ::::::::::::::: fonction de la PERIODE DE RECEPTION + PERIODE D'ANALYSE
'______________________________________________________________________________________________________
If Format(MonMail.ReceivedTime, "dd/mm/yyyy hh:mm") > Format(JourneeDebut, "dd/mm/yyyy hh:mm") Then
If Format(MonMail.ReceivedTime, "dd/mm/yyyy hh:mm") < Format(JourneeFin, "dd/mm/yyyy hh:mm") Then
'______________________________________________________________________________________________________
'A3 ========= SAUVEGARDE DES MAILS SELON PERIODE D'ANALYSE
'______________________________________________________________________________________________________
'===== ENREGISTRE chaque mail trouve dans un répertoire prédéfini : serveur D:\mails du......
MonMail.SaveAs Chemin8 & "\" & NomMailOrigine & ".MSG", olMsg
End If ' fin de la restriction sur l'expéditeur
End If ' fin de la restriction sur période "début d'analyse"
End If ' fin de la restriction sur période "fin d'analyse"
'_____________________________________________________________________________________________________
'++++++ A0 ---- PARCOURIR INBOX à la recherche de MAILS - suite de la boucle
'______________________________________________________________________________________________________
Next MonMail ' recherche du mail suivant
'Vide des instances
Set MonApply = Nothing
Set MonNSpace = Nothing
Set FldDossier = Nothing
Set MonMail = Nothing
End Sub
Partager