• 최초 작성일: 2001-02-13
  • 최종 수정일: 2026-09-30
  • 조회수: 28 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: 역순으로 인쇄하기

들어가기 전에

오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.

이번 시간에는 전화로 받은 질문 하나를 살펴봅니다.

"좀 오래된 프린터라 인쇄된 면이 위로 향하게 되어 있습니다.
그런데 1000장 이상되는 회원명부를 인쇄해야 하는데 그렇게 되면
1000장을 인쇄한 다음 하나하나 수작업으로 뒤로 넘겨야 되는데
맨 뒷장부터 인쇄되도록 하는 방법이 없습니까?"

전화로 이런 질문을 해오신 분이 있습니다. 일반적인 방법으로는 힘들것 같고, 대신 XLM 매크로를 사용하면 가능합니다. XLM 매크로(Excel4Macro)에 대해서는 오래 전에 간단하게 설명을 드린 적이 있지요?(아마 VB0051 강좌에서 였을 것입니다) 일단 아래의 버튼을 눌러서 직접 확인해 보시기 바랍니다.

"미리보기" 항목을 클릭하면 "닫기" 버튼을 매번 눌러야 하기 때문에 번거롭게 여기실 분이 혹시 있으실 지 모르겠는데 이것은 여러분들에게 보여드리기 위한 것이고, 실제 작업을 하실 때에는 "프린터로…" 항목을 누르시면 됩니다.

권현욱(엑셀러)
저자: 권현욱(엑셀러), 아이엑셀러 대표

필자는 Excel 컨설턴트, 작가, 그리고 크리에이터입니다. 현재 Microsoft Excel MVP이며, 『챗GPT+엑셀 업무자동화 정석』을 비롯한 10여 권의 도서를 집필했습니다. Excel 자동화 및 생산성 향상 분야에서 25년 넘는 경력을 보유하고 있습니다.

권현욱(엑셀러) 님의 최신 포스트:
  • 최신 글을 불러오는 중...


26년 경력 Microsoft MVP 권현욱(엑셀러) 대표 직강 1강 무료

🎁 파워툴스 마스터클래스 · 엑셀 바이브 코딩

AI에게 말로 지시해서 '나만의 엑셀 도구'를 만들고 리본에 장착합니다.

  • 코딩 지식 없이 시작 · 코드는 AI가 작성
  • 엑셀 리본에 내 탭과 버튼을 만들고 XLAM으로 공유
  • 1강 무료 수강 가능
수강 신청하기 강의 소개 보기

역순으로 인쇄하기

핵심 요약: 역순 인쇄

전체 페이지 수를 구한 뒤 마지막 페이지부터 첫 페이지까지 한 페이지씩 인쇄하면 역순 인쇄가 됩니다.

  • 1단계: ExecuteExcel4Macro로 전체 페이지 수를 구합니다.
  • 2단계: For i = 전체 To 1 Step -1로 순환합니다.
  • 3단계: PrintOut의 preview 인수로 미리보기와 실제 인쇄를 선택합니다.

Step 1: 인쇄 방법 선택 유저폼 만들기

(1) VB Editor 상태에서 UserForm을 하나 삽입하고 아래와 같이 컨트롤들을 그려 넣습니다.

인쇄방법 선택하기 유저폼: 정상 인쇄와 역순 인쇄의 프린터로, 미리보기 옵션 버튼과 종료 버튼
아이엑셀러

Step 2: 정상 인쇄 - 프린터로 버튼

(2) "정상 인쇄" 부분에 있는 "프린터로…" 옵션 버튼을 더블클릭하고 아래와 같은 코드를 작성합니다.

Private Sub optNormalPrinting_Click()
    Unload Me
    GeneralOrderPrint False
    '//코드 자체는 아주 간단합니다. 유저폼을 Unload시키고 GeneralOrderPrint라는
    '//프로시저를 호출합니다. 이 때 False값을 건네주어 함께 실행되도록 합니다.

End Sub

Step 3: 정상 인쇄 - 미리보기 버튼

(3) 이번에는 "정상 인쇄"의 "미리보기" 옵션 버튼을 더블클릭하고 아래의 코드를 입력합니다.

Private Sub optNormalPreview_Click()
    Unload Me
    GeneralOrderPrint True
    '//다른 것은 위 (2)에서 작성한 것과 똑같고… GeneralOrderPrint 프로시저를 실행할 때
    '//True값을 건네준다는 것만 다릅니다.

End Sub

Step 4: GeneralOrderPrint 프로시저

(4) 이제 GeneralOrderPrint 프로시저의 내용을 살펴보아야 겠지요? 이 프로시저는 이벤트 핸들러 프로시저가 아니라 일반 프로시저이므로 General VBA 모듈시트, 즉 보통의 모듈시트를 한장 삽입하고 여기에 작성합니다.

Sub GeneralOrderPrint(ByVal OK As Boolean)
    '//프로시저를 시작할 때 외부에서 변수를 받아와서 사용하였지요? 이와 같은 변수를…
    '//그렇지요! 파라미터 변수, 즉 매개변수라고 합니다. 어떤 프로시저로부터 값을
    '//전달받느냐에 따라 True 또는 False값이 저장되는 것이지요.

    Dim intTotalPage As Integer
    Dim i As Integer
    intTotalPage = ExecuteExcel4Macro("get.document(50)")
    '//이 부분에서 XLM 매크로가 사용되었군요. Get.document(50)은 현재 워크시트의
    '//전체 페이지수를 돌려줍니다.

    For i = 1 To intTotalPage
        ActiveSheet.PrintOut from:=i, to:=i, preview:=OK
        '//전체 페이지가 몇 페이지인지를 알았으니까 For ~ Next 순환문을 돌면서 원하는
        '//작업을 해 주면 되겠지요?

    Next i
End Sub

여기까지가 정상 방향으로 인쇄를 하는 과정이었습니다. 사실 이것은 이렇게 여러 단계를 거치고 말고 할 것도 없지요. 그냥 "미리보기" 또는 "인쇄" 아이콘을 클릭하기만 하면 되지만 기본적인 구현원리를 살펴보기 위해 좀 장황하게 설명을 드렸습니다.

그런데 아마 눈치가 빠른 분이라면 이미 답을 짐작하실 지도 모르겠습니다. (4)의 프로시저의 내용을 약간만 손질하면 되니까요. ^^

Step 5: 역순 인쇄 - 프린터로 버튼

(5) "역순 인쇄"의 "프린터로…" 옵션 버튼을 더블클릭 한 다음 코드를 작성합니다.

Private Sub optReverseOrderPrinting_Click()
    Unload Me
    ReverseOrderPrint False
End Sub

Step 6: 역순 인쇄 - 미리보기 버튼

(6) "미리보기" 옵션버튼을 더블클릭하고 다음의 코드를 작성합니다.

Private Sub optReverseOrderPreview_Click()
    Unload Me
    ReverseOrderPrint True
End Sub

Step 7: ReverseOrderPrint 프로시저

(7) 역순인쇄를 위한 코드를 작성합니다. 이 부분이 오늘의 핵심입니다. 보시는 바와 같이 (4)에서 작성한 코드와 거의 비슷합니다.

Sub ReverseOrderPrint(ByVal OK As Boolean)
    Dim intTotalPage As Integer
    Dim i As Integer
    intTotalPage = ExecuteExcel4Macro("get.document(50)")

    For i = intTotalPage To 1 Step -1
    '//전체 페이지 수를 XLM 매크로를 사용하여 알아낸 다음 For ~ Next 순환문을 돌되
    '//맨 뒷장부터 출력을 해야 하므로 For I=intTotalPage To 1 Step -1 과 같은 형태로
    '//합니다.

        ActiveSheet.PrintOut from:=i, to:=i, preview:=OK
    Next i
End Sub

마무리

다음 시간에…

정리 — 역순 인쇄 핵심

구분 사용한 코드 역할
전체 페이지 수 ExecuteExcel4Macro("get.document(50)") 시트의 총 페이지 수
정상 인쇄 For i = 1 To intTotalPage 앞 페이지부터
역순 인쇄 For i = intTotalPage To 1 Step -1 뒷 페이지부터
한 페이지 인쇄 PrintOut from:=i, to:=i 페이지 지정 출력
미리보기 선택 preview:=OK True 또는 False 전달

자주 묻는 질문 (FAQ)

Q1. 맨 뒷장부터 인쇄하려면 어떻게 하나요?

전체 페이지 수를 구한 뒤 순환문을 마지막 페이지에서 1까지 Step -1로 돌리며 페이지마다 PrintOut 합니다.

Q2. 워크시트의 전체 페이지 수는 어떻게 알아내나요?

ExecuteExcel4Macro("get.document(50)")를 사용합니다.

Q3. 프로시저의 매개변수는 무엇인가요?

프로시저를 호출할 때 다른 프로시저로부터 전달받는 값이며 여기서는 미리보기 여부(True 또는 False)를 받습니다.

마치며

XLM 매크로로 페이지 수를 구하고 순환 방향만 바꾸면 역순 인쇄를 간단히 구현할 수 있습니다.