EXCEL - VBA

엑셀 파일 인쇄 하기(PrintOut Method)

별동산 2023. 8. 22. 08:29
반응형

아래 파일을 이용해 인쇄하는 방법을 매크로로 작성해 보겠습니다.

지목별_토지현황_20230222054321.xlsx
0.20MB

 

 

 

시트의 내용은 아래와 같이 2019년도의 행정구역별 지목별 면적입니다.

 

 

 

1. PrintOut 메소드의 구문

Worksheets.PrintOut Method를 보면 오른쪽에 C#과 VB가 있는데, VB를 선택하면 아래와 같이 PrintOut에 대한 구문이 보입니다.

Worksheets.PrintOut Method

 

2. 미리 보기

가. 방법 1

위 파일을 연 다음 개발도구 - Visual Basic 명령을 눌러 VB Editor를 실행한 후

삽입 - 모듈을 눌러 모듈을 삽입한 다음 오른쪽 코드 창에

 

아래와 같이 입력한 후 

Sub 인쇄1()
    ActiveSheet.PrintOut preview:=True
End Sub

 

F5키 또는 아래 화면에서 세모 모양의 실행 아이콘을 클릭하면

매크로 실행 아이콘

 

아래와 같이 인쇄 미리 보기 창이 열리므로, 인쇄 명령을 눌러 인쇄하거나 미리 보기 창을 닫을 수 있습니다.

엑셀 - 인쇄 미리 보기

 

엑셀 통합문서 전체를 인쇄하려면

ActiveSheet를 ActiveWorkbook로 수정하면 됩니다.

 

나. 방법 2

PrintOut을 PrintPreview로 수정하면 preview 옵션 없이 바로 미리보기 상태로 됩니다.

Sub 인쇄1()
    ActiveSheet.PrintPreview
End Sub

 

 

3. 인쇄 페이지 설정

가. From, To 옵션 사용

아래와 같이 순서와 관계없이 인수 값을 입력하려면 =이 아니라 := 다음에 값을 입력하면 됩니다.

from이 1이고, to가 5이므로

Sub 인쇄2()
    ActiveSheet.PrintOut Preview:=True, from:=1, to:=5
End Sub

 

1부터 5페이지까지만 미리 보기가 됩니다.

엑셀 인쇄 미리 보기

 

나. 설정된 인수 순서대로 값 입력

인수의 순서대로 값을 입력할 때는 아래와 같이 값만 입력하면 됩니다.

순서대로 from(시작 페이지), to(종료 페이지), copies(복사본), preview(미리 보기) 값입니다.

Sub 인쇄2()
    ActiveSheet.PrintOut 1, 5, 1, True
End Sub

 

4. 반복할 행 설정

엑셀 아이콘을 눌러 워크시트로 돌아간 후

개발도구 - 매크로 기록을 누른 다음

페이지 레이아웃 - 인쇄 제목 명령을 누르면 페이지 설정 창이 나오는데,

반복할 행 오른쪽 입력 란을 클릭한 다음 시트의 1행을 클릭하면

$1:$1이 입력됩니다.

페이지 레이아웃 - 인쇄 제목 - 반복할 행, 열

 

그리고, 개발도구 - 기록 중지를 클릭합니다.

 

다시 비주얼 베이직 에디터를 실행한 다음

Module2에서 기록된 내용을 살펴보면

매크로 기록 내용 - 반복할 행(1행) 지정

 

아래 코드가 있습니다.

    With ActiveSheet.PageSetup
        .PrintTitleRows = "$1:$1"

 

이 구문을 Module1의 인쇄2 서브 프로시저에 추가하는데,

ActiveSheet가 중복되므로

With ActiveSheet로 빼내면 아래와 같이 됩니다.

Sub 인쇄2()
    With ActiveSheet
        .PageSetup.PrintTitleRows = "$1:$1"
        .PrintOut 1, 5, 1, True
    End With
End Sub

 

그리고, 워크시트로 돌아가서 반복할 행을 지운 다음

위 매크로를 실행하면 문제없이 1행이 반복됩니다.

 

그런데 한 번 반복할 행을 설정하면 기억하고 있으므로 매번 설정할 필요는 없습니다.

 

 

5. 파일명 지정 1(실패)

PrintToFile을 True로 설정하고, prToFilename을 지정해야 하는데, prToFilename을 지정하지 않으면

Sub 인쇄3()
    ActiveSheet.PrintOut from:=1, to:=5, copies:=1, printtofile:=True
End Sub

 

 파일명을 입력하라는 창이 표시되는데, 파일 형식이 *.prn이고 눌러봐도 다른 파일 형식이 없습니다,

프린터 출력 저장 - 프린터 파일(prn)

 

123이라고 입력하고 확인 버튼을 누르면 123.prn파일은 만들어지는데,

읽을 수가 없는 이상한 문자로 표시됩니다.

 

 

6. 파일명 지정 2(성공)

 

파일에서 인쇄를 누르면 프린터가 USB에 물려 있는 엡손 프린터로 되어 있는데,

이 프린터를 누르면 다양한 프린터를 선택할 수 있는데, 이 중 PDF로 되어 있는 것이 여러 개 있는데, 다른 것은 안되고, Microsoft Print to PDF만 됩니다.

엑셀 프린터 선택 창

 

따라서, ActivePrinter 인수에 Microsoft Print to PDF라고 지정하고 파일명을 확장자를 포함해서 123.pdf로 저장합니다.

코드는 아래와 같습니다. 두 번째 줄 끝에 있는 _ 표시는 실행문이 아래 줄과 연결(계속)된다는 의미입니다.

그리고, 엔터 키를 치면 ActiveSheet와 같은 칸에 위치하는데 Tab키를 눌러 안으로 들여 쓰기 했습니다.

Sub 인쇄3()
    ActiveSheet.PrintOut from:=1, to:=5, ActivePrinter:="Microsoft Print to PDF", _
        PrintToFile:=True, prtofilename:="123.pdf"
End Sub

 

그리고 실행하면  작업 중인 폴더에 저장이 되고 PDF 파일로 잘 열립니다.

PDF 파일 보기

 

파일명을 지정하지 않으면 폴더와 파일명을 입력하라고 하므로 원하는 폴더에 원하는 파일명으로 저장 가능합니다.

Sub 인쇄3()
    ActiveSheet.PrintOut from:=1, to:=5, ActivePrinter:="Microsoft Print to PDF", _
        PrintToFile:=True
End Sub

 

이 때는 파일 형식이 *.pdf로 지정되어 있으므로 확장자 없이 파일명만(예 456) 입력하면 됩니다. 그리고, 저장 버튼을 누르면 해당 폴더에 저장됩니다.

프린터 출력 저장 - PDF 문서

 

인쇄 창이 열려 있으므로 왼쪽 위 왼쪽 화살표키를 눌러 워크시트로 돌아가기 바랍니다.

 

7. collate(복사본 인쇄 순서) 지정

파일 - 인쇄 메뉴를 나오는 화면에서 '한 부씩 인쇄'하는 방법에 대한 설정이 Collate입니다.

인쇄 설정 - 페이지, 인쇄 순서, 인쇄 방향, 용지 규격, 여백, 배율

따라서, Copies를 2 이상으로 해야 합니다.

 

가. 프린터로 인쇄 시

Collate를 True로 설정하면 1,2,1,2식으로 인쇄되고,

False면 1,1,2,2식으로 인쇄됩니다.

 

Sub 인쇄4()
    ActiveSheet.PrintOut from:=1, to:=2, copies:=2, collate:=False
End Sub

 

나. 파일로 저장 시

Collate를 True로 설정하면 1,2식으로 된 파일이 2개 생기고,

False면 1,2,1,2식으로 된 파일이 하나로 만들어집니다.

Sub 인쇄5()
    ActiveSheet.PrintOut from:=1, to:=2, copies:=2, collate:=True, _
        ActivePrinter:="Microsoft Print to PDF"
End Sub

 

8. 확장자 xlsm으로 저장

VBA 코드가 들어 있으므로 저장 버튼을 눌렀다면 아니요를 선택하고 매크로 사용 통합 문서(*.xlsm)를 선택한 후 저장해야 합니다.

지목별_토지현황_20230222054321.xlsm
0.21MB

 

 

 

파일을 열면 Module2가 열리는데, 작성된 매크로는 Module1에 있으므로 Module1을 더블 클릭해야 합니다.

반응형