본문 바로가기
EXCEL&VBA

[VBA] 엄마도 한다 완전 쉬운 엑셀 주문서를 바탕화면에 PDF로 저장하는 법

by 해피케이네 2021. 12. 11.
반응형

안녕하세요 케이네입니다^^
엑셀의 페이지를 PDF로 저장한는 법은 어렵지 않지만, 하루에 만들어야 하는 PDF의 양이 100건이 넘는다면? pdf로 매번 저장하는데 걸리는 시간이 10초라고 했을때 100건의 pdf를 만들면 1000초나 되네요. 무려 약 17분의 시간이 걸린답니다. 그리고 매번 저장할때 파일명을 써야하는 수고까지... 아이고 내 손목이야!

이번에도 조금이라도 퇴근시간을 단축하기 위해서 VBA로 PDF를 저장하는걸 만들어 보았어요. 물론 1부터 모든 코드를 작성하기에는 무리가 있는 VBA를 처음 시작해본 케이네는 인터넷에서 주섬주섬 코드를 모아서 커스터마이즈 했어요. 케이네가 아는 부분에는 코드 한줄 한줄 설명을 달아보았는데 사용하시고 싶으신데로 자유롭게 활용해 주세요!

엑셀 주문서양식에 VBA로 PDF를 바탕화면에 자동저장 



Sub SaveAsPDF_PO() '요것의 이름은 마음대로 정하셔도 된답니다.

Dim WS As Worksheet 'WS도 그냥 지은 이름
Set WS = ActiveSheet 'WS가 뭔고 하니, 너는 지금 열려있는 엘셀시트다 라고 지정해주어요

Dim FileName As String '파일명을 저장해놓을 공간이에요 이름은 마음대로 지으셔도 되요

Dim FilePONO As String ' FilePONO 이것도 그냥 지은 공간이름 ,케이네는 발주번호를 넣을거에요
Dim FileNameVendor As String '거래처이름을 넣을 공간이에요
FileNameVendor = WS.Range("C4") 'FileNameVendor 이녀석은 뭔고 하니 활성화된 엑셀시트의 C4에 있는 글자를 가져다 넣을거에요 그리고 C4에는 거래처 이름이 적혀있지요!
FileNamePONO = WS.Range("C5") ' FileNamePONO는 활성화된 시트에 있는 C5에 있는 글자를 넣을거에요 C5에는 발주번호를 넣어놓았어요

Dim WSH As Object
Set WSH = CreateObject("WScript.Shell") '바탕화면으로 저장하기 위해서 요거를 써야 한다고 하네요 잘 몰라서 그냥 외우려고 해요. WSH는 그냥 지은 이름이에요~


Application.ScreenUpdating = False 'pdf로 저장하기 위해서 엑셀을 내용을 변경하지 못하게 멈춰놓아야해요

With ActiveSheet.PageSetup
.PaperSize = xlPaperA4
.Orientation = xlPortrait 'xlLandscape (가로형식으로 저장하고 싶을때) xlPortrait (세로형식으로 저장하고 싶을때) 골라서 쓰시면 된답니다.
.FitToPagesTall = 1 '행을 한장에 모아서 인쇄하기 위한 셋팅
.FitToPagesWide = 1 '열을 한장에 모아서 인쇄하기 위한 셋팅 이렇게 하면 한장으로 pdf가 저장되겠지요?
End With

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _ '드디어 엑셀의 화면을 PDF로 저장합니다!
FileName:=WSH.SpecialFolders("Desktop") & "\" & FileNameVendor & " " & FileNamePONO & ".pdf", _
'각자 사용하실때는 파일명을 가장 많이 바꿔서 쓰지 않을까 생각되네요! 반드시 & 파일명을 연결해 주시면 된답니다
OpenAfterPublish:=False ’pdf로 저장한것을 바로 열지 말지 지정하는데 열고 싶으면 True로 바꾸시면 되어요

Application.ScreenUpdating = True '멈춰놓았던 엑셀을 풀어줍니다
End Sub


하루에 주문만 100건을 만드는 일은 없지만, 업무중에 pdf파일을 생성해야 하는 일은 엄청 많아요. 손가락을 재빨리 움직여서 ctrl + p 로 인쇄 화면을 열고 pdf로 저장을 선택한 다음, 바탕화면을 선택 후, 파일명을 만들어도 10초면 끝나는 업무이지요.
하지만 하루에 단 10건이라도 VBA로 만든 파일로 클릭 한번에 일이 끝난다면 약 100초의 시간동안 커피 한모금을 음미할 정도는 여유가 생기지 않을까요!?

pdf화 예제를 첨부드렸으니 자유롭게 활용해주세요. 이세상의 모든 워킹맘들 오늘도 칼퇴를 위해 화이팅해요!

VBA_PDF_주문서_예제.xlsm
0.02MB




반응형

댓글