Extraction plusieurs pj de plusieurs mails
Bonjour,
Comme son non l'indique je souhaite exporter dans un dossier toutes les PJ de plusieurs mails reçus
J'ai trouvé une macro qui le fait parfaitement, le seul problème c'est que 500 PJ max peuvent être exporter
J'ai mis en PJ la macro, je souhaiterais que l'on m'indique si cela est normal ou si on peux faire plus, quelque chose ma peux être échappé
Merci d'avance pour votre aide
Sub ExportPJmail()
Dim GCount As Integer
Dim GFilepath As String
Public Sub SaveAttachments()
'Update 20200821
Dim xMailItem As Outlook.MailItem
Dim xAttachments As Outlook.Attachments
Dim xSelection As Outlook.Selection
Dim i As Long
Dim xAttCount As Long
Dim xFilePath As String, xFolderPath As String, xSaveFiles As String
On Error Resume Next
xFolderPath = CreateObject("WScript.Shell").SpecialFolders(16)
Set xSelection = Outlook.Application.ActiveExplorer.Selection
xFolderPath = xFolderPath & "\Attachments\"
If VBA.Dir(xFolderPath, vbDirectory) = vbNullString Then
VBA.MkDir xFolderPath
End If
GFilepath = ""
For Each xMailItem In xSelection
Set xAttachments = xMailItem.Attachments
xAttCount = xAttachments.Count
xSaveFiles = ""
If xAttCount > 0 Then
For i = xAttCount To 1 Step -1
GCount = 0
xFilePath = xFolderPath & xAttachments.Item(i).FileName
GFilepath = xFilePath
xFilePath = FileRename(xFilePath)
If IsEmbeddedAttachment(xAttachments.Item(i)) = False Then
xAttachments.Item(i).SaveAsFile xFilePath
If xMailItem.BodyFormat <> olFormatHTML Then
xSaveFiles = xSaveFiles & vbCrLf & "<Error! Hyperlink reference not valid.>"
Else
xSaveFiles = xSaveFiles & "<br>" & "<a href='file://" & xFilePath & "'>" & xFilePath & "</a>"
End If
End If
Next i
End If
Next
Set xAttachments = Nothing
Set xMailItem = Nothing
Set xSelection = Nothing
End Sub
Function FileRename(FilePath As String) As String
Dim xPath As String
Dim xFso As FileSystemObject
On Error Resume Next
Set xFso = CreateObject("Scripting.FileSystemObject")
xPath = FilePath
FileRename = xPath
If xFso.FileExists(xPath) Then
GCount = GCount + 1
xPath = xFso.GetParentFolderName(GFilepath) & "\" & xFso.GetBaseName(GFilepath) & " " & GCount & "." + xFso.GetExtensionName(GFilepath)
FileRename = FileRename(xPath)
End If
xFso = Nothing
End Function
Function IsEmbeddedAttachment(Attach As Attachment)
Dim xItem As MailItem
Dim xCid As String
Dim xID As String
Dim xHtml As String
On Error Resume Next
IsEmbeddedAttachment = False
Set xItem = Attach.Parent
If xItem.BodyFormat <> olFormatHTML Then Exit Function
xCid = ""
xCid = Attach.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001F")
If xCid <> "" Then
xHtml = xItem.HTMLBody
xID = "cid:" & xCid
If InStr(xHtml, xID) > 0 Then
IsEmbeddedAttachment = True
End If
End If
End FunctionEdit modo : fichier supprimé, code mis entre balises
Bonjour maverick59264
Je ne vois rien dans le code qui pourrait empêcher ça !
Vous avez bien plus de 500 mails avec pièce jointe dans le dossier sélectionné ?
A+
Bonjour BrunoM45,
Non j'ai moins de 500 mails mais je sélectionne mais 70 mails et dedans il y a mes PDF et l'ensemble des PDF fait 1241 et quand je lance la macro et bien cela rame un peu je pense c'est parce'que il y a beaucoup de PDF et quand je vais dans mon dossier et bien j'ai 500 élèments alors je devrais avoir 1241.
Cordialement,
Re,
Avez-vous pensé que certains éléments pouvaient avoir le même nom
Car votre fonction "Rename" n'est pas vraiment opérationnel, certes, elle semble récursive...
Je verrais plutôt quelque chose du style
Function FileRename(FilePath As String) As String
Dim xPath As String
Dim xFso As FileSystemObject
On Error Resume Next
Set xFso = CreateObject("Scripting.FileSystemObject")
xPath = FilePath
FileRename = xPath
' Tant que le fichier existe
Do While xFso.FileExists(xPath)
' Incrémenter le numéro
GCount = GCount + 1
' Définir le nouveaau nom
xPath = xFso.GetParentFolderName(GFilepath) & "\" & xFso.GetBaseName(GFilepath) & " " & GCount & "." + xFso.GetExtensionName(GFilepath)
Loop
' Si sorti de boucle le nouveau nom est
FileRename = xPath
xFso = Nothing
End FunctionA+
Bonjour,
Non les PJ ont des noms tous différents c'est pas grave ce que je fait c'est que je sélectionne les mails et je lance la macro ensuite d'autres mails et je relance
mais je dois le faire 4 ou 5 fois vu que j'ai 500 PDF qui s'affiche au max
Merci en tt cas pour ton aide