![]() |
엑셀 VBA에서 PageSetup 속성은 인쇄 설정을 조정하는 기능을 제공합니다.
즉, 여백, 방향, 크기, 인쇄 영역, 머리글/바닥글 등을 설정할 때 사용됩니다.
1. 기본 문법
Sheets("시트이름").PageSetup.속성 = 값
|
- 속성 → 인쇄 관련 설정 (Orientation, PrintArea, Zoom, FitToPagesWide, FitToPagesTall, CenterHorizontally, CenterVertically, 등)
- 값 → 원하는 설정 값 (True/False, 숫자, 문자열 등)
📌 PageSetup은 ActiveSheet.PageSetup처럼 현재 활성화된 시트에서도 사용 가능
📌 설정이 많기 때문에 With 문을 사용하면 코드가 간결해짐
2. 인쇄 방향 설정
Sub 인쇄방향_설정()
ActiveSheet.PageSetup.Orientation = xlLandscape ' 가로 방향
End Sub
|
📌 인쇄 방향을 가로(xlLandscape)로 설정
📌 세로 방향으로 설정하려면 xlPortrait 사용
3. 인쇄 영역 설정
Sub 인쇄영역_설정()
ActiveSheet.PageSetup.PrintArea = "A1:D20"
End Sub
|
📌 A1:D20을 인쇄 영역으로 지정 (이 영역만 인쇄됨)
📌 모든 셀을 인쇄하려면 PrintArea = ""로 설정
4. 여백 설정 (단위: 포인트)
Sub 여백_설정()
With ActiveSheet.PageSetup
.LeftMargin = Application.InchesToPoints(0.5)
.RightMargin = Application.InchesToPoints(0.5)
.TopMargin = Application.InchesToPoints(1)
.BottomMargin = Application.InchesToPoints(1)
End With
End Sub
|
📌 단위는 포인트(Points), InchesToPoints(인치)를 사용하여 변환 가능
📌 예: 0.5인치 = Application.InchesToPoints(0.5)
5. 용지 크기 설정
Sub 용지크기_설정()
ActiveSheet.PageSetup.PaperSize = xlPaperA4
End Sub
|
📌 용지 크기를 A4로 설정
📌 xlPaperLetter → 레터 크기(8.5 x 11 인치)
📌 xlPaperLegal → 리갈 크기(8.5 x 14 인치)
6. 확대/축소 비율 설정
Sub 확대축소_설정()
ActiveSheet.PageSetup.Zoom = 80 ' 80%로 축소
End Sub
|
📌 출력 크기를 80%로 설정 (확대/축소 가능, 10~400%)
📌 Zoom = False 설정 후 FitToPagesWide 및 FitToPagesTall을 사용할 수도 있음
7. 한 페이지에 맞게 자동 조정
Sub 한페이지에맞추기()
With ActiveSheet.PageSetup
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
End Sub
|
📌 출력을 한 페이지에 맞게 자동 조정 (FitToPagesWide = 1, FitToPagesTall = 1)
📌 가로만 한 페이지에 맞추고 세로는 자동 조정하려면 FitToPagesTall = False
8. 머리글 및 바닥글 설정
Sub 머리글바닥글_설정()
With ActiveSheet.PageSetup
.CenterHeader = "보고서 제목"
.CenterFooter = "페이지 &P / &N"
End With
End Sub
|
📌 머리글과 바닥글 설정 (&P = 현재 페이지, &N = 전체 페이지 수)
9. 인쇄 시 가로 및 세로 중앙 정렬
Sub 중앙정렬_설정()
With ActiveSheet.PageSetup
.CenterHorizontally = True ' 가로 중앙 정렬
.CenterVertically = True ' 세로 중앙 정렬
End With
End Sub
|
📌 출력 시 가로 및 세로 중앙 정렬 설정
10. 제목 행 반복 (첫 번째 행)
Sub 제목반복_설정()
ActiveSheet.PageSetup.PrintTitleRows = "$1:$1"
End Sub
|
📌 모든 페이지에서 1행을 제목 행으로 반복 출력
📌 열을 반복하려면 PrintTitleColumns = "$A:$A"
11. 눈금선 인쇄 설정
Sub 눈금선_인쇄()
ActiveSheet.PageSetup.PrintGridlines = True
End Sub
|
📌 눈금선 포함하여 인쇄 (True = 인쇄, False = 미인쇄)
12. 흑백 인쇄 설정
Sub 흑백_인쇄()
ActiveSheet.PageSetup.BlackAndWhite = True
End Sub
|
📌 흑백으로 인쇄 설정 (True = 흑백 인쇄, False = 컬러 인쇄)
13. 행 번호 및 열 문자 포함하여 인쇄
Sub 행번호열문자_인쇄()
ActiveSheet.PageSetup.PrintHeadings = True
End Sub
|
📌 출력할 때 엑셀의 행 번호(1,2,3...)와 열 문자(A,B,C...)도 인쇄됨
14. 사용자가 설정한 모든 인쇄 설정 초기화
Sub 인쇄설정_초기화()
ActiveSheet.PageSetup.PrintArea = ""
ActiveSheet.PageSetup.PrintTitleRows = ""
ActiveSheet.PageSetup.PrintTitleColumns = ""
End Sub
|
📌 사용자가 설정한 인쇄 범위 및 제목 행/열 설정 초기화
15. 모든 시트에 인쇄 설정 적용
Sub 모든시트_인쇄설정()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets
With ws.PageSetup
.Orientation = xlLandscape
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
Next ws
End Sub
|
📌 모든 시트의 인쇄 방향을 가로(xlLandscape)로 설정하고, 한 페이지에 맞게 자동 조정
📝 정리
기능
|
VBA 코드
|
인쇄 방향 설정 (가로/세로)
|
.Orientation = xlLandscape
|
인쇄 영역 설정
|
.PrintArea = "A1:D20"
|
여백 설정
|
.LeftMargin = Application.InchesToPoints(0.5)
|
용지 크기 설정 (A4)
|
.PaperSize = xlPaperA4
|
확대/축소 설정 (80%)
|
.Zoom = 80
|
한 페이지에 맞추기
|
.FitToPagesWide = 1, .FitToPagesTall = 1
|
머리글 설정
|
.CenterHeader = "제목"
|
바닥글 설정 (페이지 번호 포함)
|
.CenterFooter = "페이지 &P / &N"
|
출력 중앙 정렬
|
.CenterHorizontally = True, .CenterVertically = True
|
제목 행 반복
|
.PrintTitleRows = "$1:$1"
|
눈금선 포함 인쇄
|
.PrintGridlines = True
|
흑백 인쇄
|
.BlackAndWhite = True
|
행/열 헤더 포함 인쇄
|
.PrintHeadings = True
|
모든 시트에 인쇄 설정 적용
|
For Each ws In Sheets: ws.PageSetup...
|
🔥 VBA의 PageSetup을 활용하면 엑셀의 인쇄 설정을 자동화할 수 있습니다! 🚀