>
본문 바로가기

엑셀 실무 예제

[엑셀 매크로 실무 예제] 원하는 만큼 프린트 하고 PDF 로 저장하기

이번에 소개할 엑셀 매크로 실무 예제는 파일별 원하는 만큼 프린트하고 특정 파일은 PDF로 저장하는 방법에 관하여 포스팅하겠습니다.

여러 프린터 중 지정한 프린터로 자동 변경하는 방법도 함께 소개하겠습니다.

 

Sub KYLE_PT()
  Call printerset
  Application.Workbooks.Open FileName:="C:\Users\qcpar\OneDrive\Desktop\KYLE서류.xlsx"
  Worksheets("IAC").PrintOut From:=1, To:=1, Copies:=1, Preview:=False
  Worksheets("POLAR ICN TSA").PrintOut From:=1, To:=1, Copies:=3, Preview:=False
  Worksheets("POLAR ICN SKID").Activate
  Worksheets("POLAR ICN SKID").PrintOut From:=1, To:=1, Copies:=4, Preview:=False
  Call pdfsaveas
  Call FILE_CLOSE
End Sub

 

 1  원하는 만큼 프린트하고 PDF로 저장하기

 실행순서 

1. 원하는 프린터 자동지정

2. 원하는 파일 OPEN

3. 지정된 숫자만큼 프린터

4. 엑셀 파일 내 다른 시트 지정

5. 지정된 숫자만큼 프린터

6. 지정된 시트를 PDF로 저장

7. 저장하지 않고 파일 CLOSE

 

1. Sub KYLE_PT() : 매크로 이름 KYLE_PT

2.  Application.Workbooks.Open FileName:="C:\Users\qcpar\OneDrive\Desktop\KYLE서류.xlsx" :

- KYLE서류.xlsx 파일 OPEN

 

 

엑셀 실무 예제- 파일 위치 확인하는 방법

[파일탐색기], 파일선택후 마우스 오른쪽키 클릭 [속성]에서 위치 확인 단축키 Alt+Enter 공감과 댓글은 글쓴이에게 많은 힘이 됩니다.

aggibba.tistory.com

 

3. Worksheets("IAC").PrintOut From:=1, To:=1, Copies:=1, Preview:=False

- Worksheets("IAC").PrintOut : 열린 엑셀파일에서 IAC 시트 프린터

- From =1 : 프린터 시작페이지, 첫 장부터

- To =1 : 프린터 끝페이지, 끝페이지 1

- Copies = 1 : 인쇄매수 1장

- Preview =False : 프린 미리 보기 실행 안 함.(옵션 True )

: 특정시트의 특정 위치로부터 값을 가져올 수도 있습니다. [ex: To:=Sheets("ICN").Range("C10")]

시트이름 ICN의 C10의 위치의 값까지 프린터

 

4. Worksheets("POLAR ICN TSA").PrintOut From:=1, To:=1, Copies:=3, Preview:=False

NO3의 반복입니다, 인쇄매수가 3장

 

5. Worksheets("POLAR ICN SKID").Activate

- POLAR ICN SKID 시트 활성화

 

6. Worksheets("POLAR ICN SKID").PrintOut From:=1, To:=1, Copies:=4, Preview:=False

NO3의 반복 인쇄매수 4장

 

7. Call pdfsaveas : 매크로 이름 pdfsaveas로 이동

 

8. Call FILE_CLOSE : 매크로 이름 FILE_CLOSE로 이동

 

9. End Sub : 매크로 종료

 


 

  1-1   PRINTE SETUP

내 컴퓨터에 등록된 프린터중 특정 프린터를 지정하는 매크로 파일입니다.

Sub printerset()
Dim mynet As Object
Dim cPrint As Long
Dim PrinterName As String: PrinterName = "Kyocera ECOSYS P3260dn KX"
Set mynet = CreateObject("WScript.Network")
cPrint = mynet.enumprinterconnections.Count

On Error Resume Next
For I = 1 To cPrint
Application.ActivePrinter = "Ne" & Format(I, "00") & ":에 있는 " & PrinterName
If Application.ActivePrinter = "Ne" & Format(I, "00") & ":에 있는 " & PrinterName Then Exit For
Next

End Sub

 

1. Dim mynet As Object : Object으로 변수 mynet 선언
2. Dim cPrint As Long :Long으로 변수 cPrint 선언
3. Dim PrinterName As String: PrinterName = "Kyocera ECOSYS P3260dn KX" :PrinterName으로 변수선언하고 변수 값을 " Kyocera ECOSYS P3260dn KX" 로 지정

 

 

 

프린터 이름 찾는 법

내 컴퓨터에서 특정 프린터 이름 찾는 법입니다. 정확한 이름이 필요한 경우 띄워쓰기, 콤마등 까지 실수없이 가져올때 사용하면 좋을것 같습니다. [설정], [Bluetoothe 및 장치], [프린터 및 스캐너]

aggibba.tistory.com

 

4. Set mynet = CreateObject("WScript.Network") : 변수값 지정 
5. cPrint = mynet.enumprinterconnections.Count : 변수값 지정
6. On Error Resume Next : Error 발생시 다음 진행
7. For I = 1 To cPrint : 변수값 cPrint까지 반복

 


  1-2   PDF로 저장

파일 내 특정위치의 내용을 이름에 적용한 PDF 생성

 

인터넷을 검색하다 얻게 된 어느 엑셀고수분이 만들어 놓은 코드를 살짝만 응용한 코드입니다. pdf 파일로 저장이 필요하신 분들은 본인에 맞게 수정하여 사용하시면 되겠습니다.

아래 코드를 만들어 공유해 주신 엑셀고수분께 감사드립니다. 복 받으실 거예요 ~~

Sub pdfsaveas()
 Dim WS As Worksheet
 Set WS = ActiveSheet
 Dim FileName As String
 Dim FileNameVendor As String 
 Dim FileBBA As String
 FileNameVendor = WS.Range("A1") 
 FileNameBBA = WS.Range("H1")
 Dim WSH As Object
 Set WSH = CreateObject("WScript.Shell")

 Application.ScreenUpdating = False 
 With ActiveSheet.PageSetup
 .PaperSize = xlPaperLetter
 .Orientation = xlPortrait
 .FitToPagesTall = 1
 .FitToPagesWide = 1
 End With

 ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=WSH.SpecialFolders("Desktop") & "\" & "MAWB " & FileNameVendor & "-" & FileNameBBA & ".pdf", _ OpenAfterPublish:=False

 Application.ScreenUpdating = True
End Sub

 

1. Dim WS As Worksheet :변수선언 이름은 WS이고 Worksheet 

2. Set WS = ActiveSheet : 변수 WS는 현재 활성화되어 있는 시트

3. Dim FileName As String :변수선언 이름은 FileName이고 String (파일명을 저장해 놓을 공간으로 사용)

4. Dim FileNameVendor As String : 변수 선언 (파일이름 앞부분)
5. Dim FileBBA As String : 변수 선언 (파일이름 뒷부분)
6. FileNameVendor = WS.Range("A1") :파일이름 앞부분을 A1에서 가져옴
7. FileNameBBA = WS.Range("H1") : 파일이름 뒷부분을 H1에서 가져옴
8. Dim WSH As Object : 변수 선언
9. Set WSH = CreateObject("WScript.Shell") : 파일저장위치는 바탕화면

10. Application.ScreenUpdating = False :pdf 파일을 저장하는 동안 엑셀 정지
11.With ~ End With : Page Setup

12. ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=WSH.SpecialFolders("Desktop") & "\" & "Kyle" & FileNameVendor & "-" & FileNameBBA & ".pdf", _ OpenAfterPublish:=False
: Kyle 파일앞부분 - 파일뒷부분. pdf (Kyle777-337.pdf)의 이름으로 pdf 파일 생성
13. Application.ScreenUpdating = True : 멈춰놓았던 엑셀 실행

 


  1-3   FILE CLOSE

파일 내 특정위치의 내용을 이름에 적용한 PDF 생성

 

Sub FILE_CLOSE()
ActiveWorkbook.Close SaveChanges:=False, FileName:="C:\Users\qcpar\OneDrive\Desktop\KYLE서류.xlsx"
End Sub

 

1,ActiveWorkbook.Close SaveChanges:=False, FileName:="C:\Users\qcpar\OneDrive\Desktop\KYLE_서류.xlsx"

: KYLE서류. xlsx를 저장하지 않고 CLOSE

파일 위치 확인하는 방법은 위에 있습니다. ^^

 

이상 제가 실무에서 매일 사용하고 있는 "[엑셀 매크로 실무 예제] 원하는 만큼 프린트하고 PDF로 저장하기" 였습니다.

조금이라도 도움이 되었으면 좋겠습니다.

 

 

공감댓글은 글쓴이에게 많은 힘이 됩니다.