본문 바로가기
Tip

[Tip] PDF 인쇄하기

by 일등미노왕국 2022. 6. 10.

예전부터 완쵸님께서 도움을 요청했던 내용이다.

PDF를 순환하면서 지정한 인쇄권수 만큼 출력하는 것인데...

본인도 소량은 테스트로 인쇄를 하였는데 몇백장이 넘어가는 파일의 인쇄는 실제 해보지 않은 상태라 이 파일이 에러 없이 끝까지 진행될지는 미지수이다.

 

그래도 일단 PDF파일을 원하는 수량만큼 인쇄하는 코드를 게재하기고 하였다.

누군가에게 이 코드가 필요하길 기도한다.

 

본코드는 아크로뱃에서 pdf를 인쇄를 진행하였는데,

pdf 파일을 처리하는 디폴트 값으로 인쇄가 되기 때문에 본인 프로그램에 따라 TAB키 횟수를 조절하면 되며,

파일의 크기에 따라 엔터이후 딜레이 시간을 가변적으로 주면 된다.

더보기
Option Explicit

Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias _
"ShellExecuteA" (ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long

Public Sub PrintFile(ByVal strPathAndFilename As String)

   Call ShellExecute(Application.hwnd, "open", strPathAndFilename, vbNullString, vbNullString, 0)

End Sub

Sub PrintPDF()
    Dim rngX As Range: Set rngX = [a4]                      '= 파일명 위치
    Dim Filename$, i&
    
    
    Do Until rngX = ""
        Filename = [a2] & rngX & ".pdf"
        PrintFile (Filename)
        
        
        Application.Wait (Now + TimeValue("00:00:02"))      '= 2초대기
        
        Application.SendKeys "^p", True                     '= 컨트럴 P -> 인쇄 단축키
        Application.SendKeys "{TAB}{TAB}{TAB}{TAB}", True   '= 탭키 3번
        Application.SendKeys rngX(1, 3), True               '= 인쇄권수
        
        Application.Wait (Now + TimeValue("00:00:05"))      '= 5초대기
        Application.SendKeys "{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}", True
                                                            '= 탭키 11번
        Application.SendKeys "{ENTER}", True                '= 엔터키
        
        Application.Wait (Now + TimeValue("00:05:00"))      '= 2분대기
               

        Set rngX = rngX.Offset(1)                           '= 다음파일
    Loop
    
End Sub

pdf 인쇄.zip
12.86MB

댓글