8. 그 밖의 설정
이 글에서 PrintOut 메소드에 대해 알아봤는데,
좀 더 상세한 페이지 설정에 대해 알아보겠습니다.
가. 워크시트에서 설정하기
메뉴로 보면 파일 - 인쇄를 누르면 아래 화면이 나오는데,
여기서 페이지 설정을 누르면 나오는
페이지 설정 창에서 하는 것을 VBA로 구현하는 것인데,
'반복할 행과 열'은 위 화면에서 설정할 수 없고, 페이지 레이아웃 탭의 인쇄 제목 명령을 누르면 나오는 페이지 설정 화면의 시트 탭에서 설정해야 합니다.
나. VBA로 구현하기
Sub 인쇄6()
Range("a1").Select
Application.PrintCommunication = False
With ActiveSheet.PageSetup
.PaperSize = xlPaperA4 '용지 규격 A4
'인쇄 영역 설정(A1셀에서 Shift+Ctrl+End룰 눌러 A1셀부터 마지막셀까지 범위 설정)
.PrintArea = Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Address
.Orientation = xlPortrait '세로 방향, 가로 방향은 xlLandscape
.PrintTitleRows = "$1:$1" '반복할 행 지정
' .PrintTitleColumns = "$A:$B" '반복할 열 지정
.CenterHorizontally = True '가로 가운데 맞춤
.CenterVertically = False '세로 가운데 맞춤
.BlackAndWhite = False '컬러 인쇄, True는 그레이스케일
.Zoom = False '확대/축소 배율 100%. 자동 맞춤하려면 False
.FitToPagesWide = 1 '한 페이지에 모든 열 맞추기
.FitToPagesTall = 0 '한 페이지에 모든 행 맞추기
End With
Application.PrintCommunication = True
ActiveSheet.PrintOut ActivePrinter:="Microsoft Print to PDF", preview:=True
End Sub
(1) Range("a1").Select
A1셀을 선택하는 것입니다.
뒤에서 인쇄 영역 설정할 때 사용합니다.
(2) Application.PrintCommunication = False
이 구문이 없을 경우 뒤에서 나올 FitToPagesWide 또는 FitToPagesTall에서 에러가 나서 추가해야 합니다.
아래와 같이 Application.PrintCommunication = False 줄에 주석을 설정하고 실행하니 'FitToPagesTall 속성을 설정할 수 없습니다'란 에러 메시지가 표시됩니다.
PrintOut Method 전에 Application.PrintCommunication을 True로 바꿔야 설정이 반영됩니다.
True 구문이 없으면 한 단계씩 늦게 설정이 반영됩니다.
(3) With ActiveSheet.PageSetup ~ End With
인수 분해처럼 공통되는 부분을 With 다음에 쓰고,
공통되는 부분을 제외한 부분을
.PaperSize = xlPaperA4 식으로 설정합니다.
이것은 ActiveSheet.PageSetup.PaperSize = xlPaperA4을 간략히 한 것입니다.
이렇게 하면 코드가 간단해지는 장점이 있으며,
End With로 끝냅니다.
(4) 용지 규격
.PaperSize = xlPaperA4
용지 규격을 A4로 설정하는 것입니다. A4를 B4, A3 등으로 바꾸면 됩니다.
(4) 인쇄 영역 설정
.PrintArea = Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Address
인쇄 영역을 "A1:H1857"로 설정하면 데이터가 변경됐을 때 수정해야 하므로
위와 같이 마지막 셀을 찾는 이동 옵션을 사용해서 범위를 설정할 수 있습니다.
현재 셀에서 마지막셀까지 범위를 설정하는단축키는 Shift + Ctrl + End 키입니다.
(5) 인쇄 방향
.Orientation = xlPortrait
인쇄 방향을 세로로 하는 것이고,
가로 방향으로 하려면 xlLandscape라고 하면 됩니다.
(6) 반복할 행 또는 열
.PrintTitleRows = "$1:$1" : 반복할 행을 1행으로 지정하는 것입니다.
PrintTitleColumns = "$A:$B" : A와 B열을 반복할 열로 지정하는 것입니다.
(7) 인쇄 영역을 가로 가운데 또는 세로 가운데로 맞춤
.CenterHorizontally = True '인쇄할 영역을 가로 가운데에 배치하는 것입니다.
.CenterVertically = False '인쇄할 영역을 세로 가운데에 배치하는 것입니다.
(8) 컬러 또는 그레이 스케일 인쇄
.BlackAndWhite = False
흑백(그레이스케일)이 False이므로 컬러로 인쇄하는 것이고,
True로 하면 그레이스케일로 인쇄 됩니다.
워크시트에서는 프린터 아래 '프린터 속성'을 눌러 컬러에서 컬러 또는 그레이스케일을 선택해서 설정합니다.
(9) 확대/축소 배율 또는 자동 맞
페이지 설정 화면에서 보면 Zoom(확대/축소 배율)과 자동 맞춤중 하나만 선택 가능합니다.
따라서, 자동 맞춤 - FitToPagesWide(용지 너비를 설정된 숫자에 맞춤), FitToPagesTall(용지 높이를 설정된 숫자에 맞춤)을 설정할 때는 Zoom을 숫자에서 False로 바꿔야 합니다.
한 페이지에 모든 열 맞추기는
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 0
라고 값을 지정하며,
한 페이지에 모든 행 맞추기는
.Zoom = False
.FitToPagesWide = 0
.FitToPagesTall = 1
라고 값을 지정합니다.
'EXCEL - VBA' 카테고리의 다른 글
매크로 - 범위로 처리하기 (0) | 2023.09.03 |
---|---|
인쇄 내용을 PDF, XPS 파일로 저장하기 (0) | 2023.08.24 |
엑셀 파일 인쇄 하기(PrintOut Method) (0) | 2023.08.22 |
엑셀 VBA에서의 주석 처리 (0) | 2023.08.03 |
여러 가지 조건을 만족하는 값을 찾을 때(3) - 동적 배열을 이용한 속도 개선 (0) | 2023.07.27 |