2017-10-16 1 views
1

PDF 파일을 순서대로 인쇄하는 방법 (셀 목록 순서)을 이해할 수 없습니다.Excel-VBA를 사용하여 셀 목록 순으로 PDF 파일을 인쇄하는 방법은 무엇입니까?

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 

시각 자료 : enter image description here

연구 내가 지금까지했던 :

없음 명령 줄 switch 순서대로 파일을 인쇄합니다. 제안 후

업데이트-1 MyCode :

내 코드에서 방법을 object.run 사용하고 내가 얻을 오류 :

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 

오류 :

Error

업데이트 -2 내 코드 Afte 연구 제안 :

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

문제 : 나는 그러나 나는 각 파일 후 Adobe Acrobat Reader가 종료해야 실행 방법을 사용하여 인쇄 할 수 있었다. 500 개 이상의 파일을 인쇄해야합니다.

+0

당신은 ** 셸 ** 루프에 있습니다; 다음 쉘이 시작되기 전에 하나의 ** 쉘 **이 완료 될까요? –

+0

인쇄가 완료 될 때까지 Adobe는 열어 두시겠습니까? Adobe를 객체, 인쇄, Adobe.Quit, Do not Not Adobe Is Nothing으로 선언하면 어떨까요? 나는 Adobe를 조작하는데 너무 많은 경험이 없지만 가능한 방법이다. –

+0

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

답변

0

나는 파일을 파일 디렉토리에 존재 주어진 셀 목록에서 모든 파일 종류를 인쇄하는 데 사용할 this

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 

최종 하위() 고스트 스크립트로

+0

답변을 완료하기 위해 쉘 명령 대기가 표시되지 않습니다. – shaadi

+0

http://dmcritchie.mvps.org/excel/shell.htm – VinhCC

+0

에서 셸 샘플을 볼 수 있습니다. 관련 링크는 내 컨텍스트와 관련이 없습니다 (no waitOnReturn). 문제는 루프에서 다른 줄을 시작하기 전에 한 줄을 끝내기를 원한다는 것입니다. 이미 셸을 사용하여 문제의 샘플 코드를 봅니다. – shaadi

0

하위 PrintPDFFiles를 코드를 수정합니다. 기본적으로 소프트웨어는 모든 종류의 파일을 순서대로 인쇄합니다.

관련 문제