Bonjour.
On peut extraire des message de Outlook depuis Excel, et détacher les pièces jointes.
Par exemple voici un code qui recherche dans la boîte de réception les messages qui contiennent un libellé désiré dans leur objet et détache les pièces jointes:
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 45 46 47 48
| '----------------------------------------------------------------------------------------
Function DetachePiecesJointesTDFV() As Boolean
'----------------------------------------------------------------------------------------
' Détache toutes les pièces jointes de la boîte de réception Outlook dont le sujet
' contient le mot clé "[TDFV.XLSM:" et les enregistre dans le dossier Téléchargements.
' Retourne : Vrai si tout s'est bien passé ou Faux en cas d'erreur.
'----------------------------------------------------------------------------------------
Dim i As Long, PJ As Outlook.Attachment
Err.Clear
On Error GoTo Gest_Err
Dim olApp As Outlook.Application
Set olApp = GetObject("", "Outlook.Application") ' Déclaration objet Outlook.
Dim MyNameSpace As Outlook.Namespace
Set MyNameSpace = olApp.GetNamespace("MAPI")
Dim MaBoite As Object
Set MaBoite = MyNameSpace.GetDefaultFolder(olFolderInbox)
' Boucle la boîte de recéption:
For i = 1 To MaBoite.Items.Count
' Si l'élément est du type message:
If MaBoite.Items(i).Class = 43 Then
' Si le sujet contient le mot clé:
If InStr(1, MaBoite.Items(i).Subject, "[TDFV.XLSM:") > 0 Then
' Détache les pièces jointes:
For Each PJ In MaBoite.Items(i).Attachments
PJ.SaveAsFile Environ("USERPROFILE") & "\Downloads\" & PJ.Filename
Next PJ
End If
End If
Next i
DetachePiecesJointesTDFV = True
Gest_Err:
If Err.Number <> 0 Then
MsgBox "Erreur:" _
& Chr(10) & Chr(13) & Chr(10) & Chr(13) _
& Err.Number & " : " & Err.Description, vbCritical
End If
Set olApp = Nothing
Set MaBoite = Nothing
End Function |
Pour décompresser on peut utiliser 7-Zip.
Ici l'on par du principe que le répertoire où est 7z.exe est connu :
Exemple pour décompresser tous les fichiers zip du dossier C:\TDFV dans le même dossier :
Call UnZip("C:\TDFV\*.zip.*", "C:\TDFV\")
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| '----------------------------------------------------------------------------------------
Public Function UnZip(StrSource As String, StrDest As String) As Long
'----------------------------------------------------------------------------------------
' Décompresse les fichiers sources dans le répertoire de destination.
'----------------------------------------------------------------------------------------
Dim StrCommand As String
Dim ZipExe As String
ZipExe = "C:\Program Files\7-Zip\7z.exe"
StrCommand = Chr(34) & ZipExe & Chr(34) & " e " _
& Chr(34) & StrSource & Chr(34) _
& " -o" _
& Chr(34) & StrDest & Chr(34) _
& ""
UnZip = Shell(StrCommand, vbHide)
End Function |
Ne pas oublier l'aide dans Outlook et le forum du site : https://outlook.developpez.com/faq/
Bonne continuation.
Partager