이번에 소개할 엑셀 매크로 실무 예제는 파일별 원하는 만큼 프린트하고 특정 파일은 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로 저장하기" 였습니다.
조금이라도 도움이 되었으면 좋겠습니다.
공감과 댓글은 글쓴이에게 많은 힘이 됩니다.
'IT 인터넷 및 프로그램... > MS Office' 카테고리의 다른 글
[엑셀 실무 예제] 입력된 날짜와 시간 기록하기 (0) | 2023.12.16 |
---|---|
[엑셀 실무 예제] Source에 있는 값 찾기 (VLOOKUP, IF, AND) (0) | 2023.12.15 |
프린터 이름 찾는 법 (0) | 2023.12.14 |
[엑셀 실무 예제] 파일 위치 확인하는 방법 (0) | 2023.12.14 |
[엑셀 실무 예제] 일일 업무 스테이션 -2/2 (조건부서식, VLOOKUP, 매크로) (0) | 2023.12.13 |