본문 바로가기
지난 게시글

[엑셀] VBA 원하는 시트만 인쇄하기(또는 PDF 파일 만들기)

by yyDandy 2024. 1. 11.
반응형

안녕하세요. yyDandy입니다. 사무실 칼퇴보장 알잘딱깔센 엑셀 활용법! 

 


개요

이번에는 VBA 기능을 이용하여 원하는 시트만 인쇄하거나 PDF로 만드는 방법에 대해 알려드릴게요. VBA 기능을 이용하는 가장 큰 이유는 아무래도 자동화를 통한 능률향상입니다. 하지만 일부 기능을 만들면서 사실 수동적으로 하는 게 더 빠르게 끝나는 경우가 있어요. 예를 들어, 파이썬에서 Hello World 10번을 치는데 초보는 For i in 10 뭐 이런걸 한다면.. 사실 진짜 고수는 printf를 10번 쓰거든요. 그래서 언제나 기능을 쓰실 때는 손익을 따져보는 게 좋아요. 그래도 VBA 기능을 매 번 코딩 하는 것이 아니라 해놓고 여러 번 쓰다보면 결국 이득이니까요! 이번 기능도 꼭 필요하신 분이 잘 쓰셨으면 좋겠네요!

 

 

 

이 엑셀은 제가 실제로 예산과 계획을 세우는 엑셀인데, 여기서 심심하면 VBA를 위해 시트를 추가로 만들어놨어요. 그런데 아무래도 1, 2 시트는 보여드릴 수 없으니 3~6의 시트만 PDF로 저장하고 싶은데 어떻게 하면 편할까요? 각 시트마다 눌러서 다른이름으로 저장을 하고 PDF 형식으로 해도 되겠지만, 이번에는 VBA 기능을 이용하여 능률을 올려볼게요.

 

코드

 

 

이번에는 2가지 스타일이 있는데요. 위는 파일 1개로 출력하는 방식이에요. 3, 4, 5시트 마다 파일이 1개씩 총 3개의 파일이 생성되고, 각 시트마다 다른 이름으로 저장할지 안내가 나와요. 따라서 시트가 20개라면 20번의 응답을 해줘야 한답니다. 그래도 각 시트별로 따로 저장이 필요하신 경우에는 위 코드를 쓰면 돼요. 아래의 경우에는 3, 4, 5 시트가 1개의 PDF 파일로 인쇄되도록 할 수 있어요. 아래는 배열의 개념을 이용한 것인데 편하신 방법으로 이용하시면 되겠습니다!

 

반응형

코드 복사

 

Sub 파일1개로출력()
    Dim arrSht
    Dim i As Long

    arrSht = Array(1, 3, 5)
    For i = 0 To UBound(arrSht)
        Sheets(arrSht(i)).PrintOut
    Next i   
End Sub

 

Sub 각파일로출력()

    Dim arrSht 
  

    arrSht = Array(1, 3, 5)

    Sheets(arrSht).PrintOut 

End Sub

 


 

반응형