2017-10-16 26 views
1

Je n'arrive pas à comprendre comment je peux imprimer les fichiers PDF dans l'ordre (ordre de la liste des cellules).Comment imprimer des fichiers pdf dans l'ordre de la liste de cellules en utilisant Excel-VBA?

Sub PrintPDFFiles() 
    zProg = "C:\Program Files\Adobe\Reader 11.0\Reader\AcroRd32.exe" 
    zLastRow = [a65536].End(xlUp).Row 
    temp = "a1:a" & zLastRow 
    zPrinter = "HP LaserJet Professional M1213nf MFP " 
    For Each cell In Range(temp) 
    zFile = cell.Value 
    If zFile Like "*.pdf" Then 
    Shell """" & zProg & """/n /h /t""" & zFile & """" 
    End If 
    Next 
    End Sub 

aide visuelle: enter image description here

recherche Je l'ai fait jusqu'à présent:

Aucune ligne de commande switch pour imprimer des fichiers dans l'ordre.

Mise à jour-1 MyCode Après Suggestions:

je object.run méthode dans mon code et j'obtiens l'erreur:

Sub PrintPDFFiles() 
    zProg = "C:\Program Files\Adobe\Reader 11.0\Reader\AcroRd32.exe" 
    zLastRow = [a65536].End(xlUp).Row 
    temp = "a1:a" & zLastRow 
    zPrinter = "HP LaserJet Professional M1213nf MFP " 
    For Each cell In Range(temp) 
    zFile = cell.Value 
    If zFile Like "*.pdf" Then 
    Dim wsh As Object 
    Set wsh = VBA.CreateObject("WScript.Shell") 
    Dim waitOnReturn As Boolean: waitOnReturn = True 
    Dim windowStyle As Integer: windowStyle = 1 
    zCommand = zProg & " /n /h /t " & Chr(34) & zFile & Chr(34) & " " & zPrinter 
    wsh.Run zCommand, windowStyle, waitOnReturn 
    End If 
    Next 
    End Sub 

Erreur:

Error

Update-2 Mon code Afte r Suggestions:

wsh.Run """Acrobat.exe"" /n /h /t" & Chr(34) & zfile & Chr(34) & " " & zPrinter, , waitOnReturn 

Problème: I réussi à imprimer en utilisant la méthode d'exécution, mais je dois fermer Adobe Acrobat Reader après chaque fichier. Je dois imprimer plus de 500 fichiers.

+0

Vous êtes ** Shell ** ing dans une boucle; Êtes-vous sûr qu'un ** Shell ** se termine avant que le prochain soit lancé ?? –

+0

Est-ce qu'Adobe reste ouvert jusqu'à la fin de l'impression? Que faire si vous essayez de déclarer Adobe en tant qu'objet, Imprimer, Adobe.Quit, puis "Ne pas Adobe n'est rien". Je n'ai pas trop d'expérience avec la manipulation d'Adobe, mais c'est une méthode possible. –

+0

Voir: https://stackoverflow.com/questions/15951837/wait-for-shell-command-to-complete –

Répondre

0

Je modifie le code avec Ghostscript

Sous PrintPDFFiles()

zProg = "gsprint -printer printerName -dPDFFitPage " 
zLastRow = [a65536].End(xlUp).Row 

Dim Counter As Integer 

For Counter = 1 To zLastRow 

    zFile = Worksheets("Sheet1").Cells(Counter, 1).Value ' Where 1 is the first column 
    If zFile Like "*.pdf" Then 
     Shell """" & zProg & zFile & """" 
    End If 

Next Counter 

End Sub

+0

Je ne vois pas l'attente de la commande shell à compléter dans votre réponse. – shaadi

+0

Il est un exemple de shell à http://dmcritchie.mvps.org/excel/shell.htm – VinhCC

+0

lien n'est pas pertinent dans mon contexte - pas waitOnReturn. Le problème est que je veux finir une ligne avant de commencer une autre ligne en boucle. J'utilise déjà Shell voir mon exemple de code en question. – shaadi

0

Utilisez this pour imprimer toutes sortes de fichiers de la liste des cellules étant donné que les fichiers existent dans le répertoire de fichiers. Fondamentalement, ce logiciel imprime tous les types de fichiers dans l'ordre.