아래 파일을 이용해 인쇄하는 방법을 매크로로 작성해 보겠습니다.
시트의 내용은 아래와 같이 2019년도의 행정구역별 지목별 면적입니다.
1. PrintOut 메소드의 구문
Worksheets.PrintOut Method를 보면 오른쪽에 C#과 VB가 있는데, VB를 선택하면 아래와 같이 PrintOut에 대한 구문이 보입니다.
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에서 기록된 내용을 살펴보면
아래 코드가 있습니다.
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이고 눌러봐도 다른 파일 형식이 없습니다,
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 파일로 잘 열립니다.
파일명을 지정하지 않으면 폴더와 파일명을 입력하라고 하므로 원하는 폴더에 원하는 파일명으로 저장 가능합니다.
Sub 인쇄3()
ActiveSheet.PrintOut from:=1, to:=5, ActivePrinter:="Microsoft Print to PDF", _
PrintToFile:=True
End Sub
이 때는 파일 형식이 *.pdf로 지정되어 있으므로 확장자 없이 파일명만(예 456) 입력하면 됩니다. 그리고, 저장 버튼을 누르면 해당 폴더에 저장됩니다.
인쇄 창이 열려 있으므로 왼쪽 위 왼쪽 화살표키를 눌러 워크시트로 돌아가기 바랍니다.
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)를 선택한 후 저장해야 합니다.
파일을 열면 Module2가 열리는데, 작성된 매크로는 Module1에 있으므로 Module1을 더블 클릭해야 합니다.
'EXCEL - VBA' 카테고리의 다른 글
인쇄 내용을 PDF, XPS 파일로 저장하기 (0) | 2023.08.24 |
---|---|
인쇄관련 PageSetup(페이지 설정) VBA (0) | 2023.08.23 |
엑셀 VBA에서의 주석 처리 (0) | 2023.08.03 |
여러 가지 조건을 만족하는 값을 찾을 때(3) - 동적 배열을 이용한 속도 개선 (0) | 2023.07.27 |
여러 가지 조건을 만족하는 값을 찾을 때(2-2) - 사용자 정의 함수(2) (2) | 2023.07.26 |