Outlook Ordre impression VBA Outlook

Snoop71

XLDnaute Nouveau
Bonjour à tous,

Je dois imprimer des fichiers générés en grand nombre, et ce n'est pas très sympa de devoir les trier de nouveau par numéro car les impressions se font de manière "aléatoire". Vu mon incompétence en VBA, je fais appel à vous afin de trouver solution à mon problème.
J'aimerais que les fichiers sélectionnés (pièces jointes de mails) soient triés par ordre alphabétique et ainsi imprimés cet ordre.
J'utilise déjà actuellement un module qui me permet d'imprimer en "deux clics" les pièces jointes des mails sélectionnés. Cette fonction de tri serait un réel confort en plus dans cette tâche.
Je précise que j'ai regardé si les paramètres imprimantes étaient la cause, je n'ai rien trouvé.

Voici les détails du module utilisé actuellement:
Sub PrintAllAttachmentsInMultipleMails()

Dim xFileSystemObj, xShellApp As Object
Dim xNameSpace, xNameSpaceItem, xItem As Object
Dim xTempFldPath, xFilePath As String
Dim xSelItems As Outlook.Selection
Dim xMailItem As Outlook.MailItem
Dim xAttachments As Outlook.Attachments
On Error Resume Next

Set xFileSystemObj = CreateObject("Scripting.FileSystemObject")

xTempFldPath = xFileSystemObj.GetSpecialFolder(2).Path & "\Attachments " & Format(Now, "yyyymmddhhmmss") 'xFileSystemObj.GetSpecialFolder(2) For saving temporary files

If xFileSystemObj.FolderExists(xTemfldpath) = False Then 'create temporary folder

xFileSystemObj.CreateFolder (xTempFldPath)

End If

Set xSelItems = Outlook.ActiveExplorer.Selection

Set xShellApp = CreateObject("Shell.Application")

Set xNameSpace = xShellApp.NameSpace(0)

For Each xItem In xSelItems

If xItem.Class = OlObjectClass.olMail Then

Set xMailItem = xItem

Set xAttachments = xMailItem.Attachments

For Each xAttachment In xAttachments

xFilePath = xTempFldPath & "\" & xAttachment.FileName

xAttachment.SaveAsFile (xFilePath)

Set xNameSpaceItem = xNameSpace.ParseName(xFilePath)

xNameSpaceItem.InvokeVerbEx ("print")

Next

End If

Next
Set xItem = Nothing
Set xNameSpaceItem = Nothing
Set xNameSpace = Nothing
Set xShellApp = Nothing
Set xFileSystemObj = Nothing
End Sub

Merci d'avance pour votre aide précieuse.
Cordialement
 

STephane

XLDnaute Occasionnel
Bonjour

Pour trier les fichiers, il y a sûrement d'autres options mais celle ci-dessous marche (en tout cas chez moi car je possède les bonnes librairies)
VB:
Set outputLines = CreateObject("System.Collections.ArrayList")

For Each f in xFileSystemObj.GetFolder(".").Files

  outputLines.Add f.Name

Next

outputLines.Sort

Ensuite, on reboucle sur la collection de fichiers "outputLines"
Code:
For Each outputLine In outputLines

  Set file = xFileSystemObj.GetFolder(".").Files.Item(outputLine & "")

  Debug.Print file.Name ' TODO: your thing here

'peut-être que l'instruction ci-dessous marchera dans ton cas de figure
Set xNameSpaceItem = xNameSpace.ParseName(file)
xNameSpaceItem.InvokeVerbEx ("print") 

Next
 

Discussions similaires

Haut Bas