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
| Option Explicit
Const ForReading = 1
Const ListeFichiers = "C:\Temp\ListePDF.txt" 'Fichier contenant la liste des PDF à imprimer(à modier selon le besoin)
' UN SEUL CHEMIN PAR LIGNE
Dim objShell, colItems, objItem, objFolder
Set objShell = CreateObject("Shell.Application")
Call LireListe ' Lecture de la liste puis impression
Sub LireListe()
Dim fso, LigneLue, NomFichier, NomDossier, oFile
Set fso = CreateObject("Scripting.FileSystemObject")
Set oFile = fso.OpenTextFile(ListeFichiers, ForReading, False)
Do While Not oFile.AtEndOfStream
LigneLue = oFile.ReadLine
If LigneLue <> "" Then ' vérifie si une ligne est vide évitant ainsi des erreurs de lecture
NomDossier = Left(LigneLue, InstrRev(LigneLue, "\"))
NomFichier = Right(LigneLue, Len(LigneLue)-Len(NomDossier))
Call PrintPDF(NomDossier, NomFichier)
' SI besoin d'une attente avant de commencer avec le fichier suivant, on fait :
Wscript.Sleep 5000 ' Attente de 5 secondes(qu'on peut augmenter au choix)
' MsgBox LigneLue & " // " & NomFichier ' pour vérification
End If
Loop
End Sub
'==============================
Sub PrintPDF(strDir, strFile)
Set objFolder = objShell.Namespace(strDir)
Set colItems = objFolder.Items
For Each objItem in colItems
If Ucase(Right(ObjItem.Name,4)) = ".PDF" Then
' Vérifie qu'il s'agit bien d'un fichier de la liste établie au préalable puis l'imprime
If UCase(ObjItem.Name) = UCase(strFile) Then objItem.InvokeVerbEx("Print")
End If
Next
End Sub |
Partager