Contents 호환성 문제의 정의와 증상 분류 즉시 조치 체크리스트(빠른 복구) 파일 형식별 특성과 선택 기준 버전 차이로 인한 기능 손실과 대체 전략 조직 환경 차이: 32/64비트, 추가기능, 보안 정책 CSV·텍스트 파일 호환성: 인코딩·구분 기호·서식 날짜·숫자 변형 방…
글 전체 보기- 공유 링크 만들기
- X
- 이메일
- 기타 앱
Contents 호환성 문제의 정의와 증상 분류 즉시 조치 체크리스트(빠른 복구) 파일 형식별 특성과 선택 기준 버전 차이로 인한 기능 손실과 대체 전략 조직 환경 차이: 32/64비트, 추가기능, 보안 정책 CSV·텍스트 파일 호환성: 인코딩·구분 기호·서식 날짜·숫자 변형 방…
글 전체 보기이 글의 목적은 엑셀에서 인쇄 영역을 올바르게 지정했음에도 범위가 밀리거나 잘리는 문제를 재발 없이 해결하도록, 원인 진단부터 표준 설정·자동화 스크립트까지 현장에서 바로 적용 가능한 절차를 제공하는 것이다.
인쇄 영역이 어긋나는 주된 원인은 다음과 같이 분류할 수 있다.
| 증상 | 가능 원인 | 즉시 조치 |
|---|---|---|
| 첫 페이지가 오른쪽으로 밀려 시작된다 | 수동 페이지 나누기, 왼쪽 여백 과대, 도형 위치 | 페이지 나누기 모두 제거 → 여백 보통으로 → 도형 “셀에 맞게 이동” 확인 |
| 한 열이 다음 페이지로 넘어간다 | 배율 100% 고정, 용지 A4 vs Letter 불일치 | “모든 열을 한 페이지에 맞춤” 또는 용지 크기 일치 |
| 맨 아래 합계 행이 잘린다 | 바닥글 높이, 아래 여백, 행 높이 고정 | 바닥글 제거·간소화 → 아래 여백 축소 → 행 높이 자동 맞춤 |
| 페이지 수 미예측적 증가 | UsedRange 팽창, 숨김 영역 포함 | 빈 행·열 완전 삭제 후 저장 → UsedRange 재설정 |
| 프린터 바뀌면 레이아웃 흔들림 | 프린터 최소 여백, DPI 차이 | PDF 프린터 기준 템플릿 확정 → 장치별 프로필 문서화 |
서식만 남은 빈 셀이 시트 끝까지 남아 있으면 인쇄 영역이 의도치 않게 커진다. 다음 절차로 정리한다.
' UsedRange 강제 재설정 Sub ResetUsedRange() Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets ws.UsedRange ' 트리거 Next ws End Sub 수동 페이지 나누기가 남아 있으면 인쇄 영역이 어긋난다. 다음 매크로로 모든 시트에서 한 번에 제거한다.
' 모든 시트 수동 페이지 나누기 제거 Sub ClearAllManualBreaks() Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets ws.ResetAllPageBreaks Next ws End Sub 보고서 템플릿에 아래 표준을 통일해 배포하면 흔들림을 최소화한다.
' 표준 페이지 설정(A4, 보통 여백, 가로 먼저, 모든 열 한 페이지) Sub ApplyStandardPageSetup(Optional ByVal FitAllColumns As Boolean = True) Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets With ws.PageSetup .PaperSize = xlPaperA4 .Orientation = xlPortrait ' 데이터가 넓으면 xlLandscape .LeftMargin = Application.CentimetersToPoints(2) .RightMargin = Application.CentimetersToPoints(2) .TopMargin = Application.CentimetersToPoints(2) .BottomMargin = Application.CentimetersToPoints(2) .HeaderMargin = Application.CentimetersToPoints(0.8) .FooterMargin = Application.CentimetersToPoints(0.8) .CenterHorizontally = False .CenterVertically = False .PrintHeadings = False .PrintGridlines = False .Zoom = False If FitAllColumns Then .FitToPagesWide = 1 .FitToPagesTall = False ' 세로 페이지 수는 자동 Else .Zoom = 100 End If .Order = xlOverThenDown ' 가로 먼저 End With ws.ResetAllPageBreaks ws.PageSetup.PrintArea = "" ' 인쇄 영역 초기화 Next ws End Sub .Zoom = 100과 .FitToPagesWide 설정을 동시에 사용하지 않는다.머리글·바닥글 높이가 과도하면 본문이 줄어들어 페이지가 갈라진다. 다음 원칙을 따른다.
&P / &N 형태로 사용한다.프린터마다 최소 여백과 드라이버 처리 방식이 다르다. 작업 표준을 다음과 같이 정한다.
가로로 넓은 표는 페이지 순서를 가로 먼저로 하면 읽기 흐름이 안정된다. 세로가 긴 목록은 세로 먼저가 적합하다. 조직 표준을 한 가지로 정해 혼선을 줄인다.
| 유형 | 방향 | 배율 정책 | 머리글/바닥글 | 페이지 순서 |
|---|---|---|---|---|
| 월간 요약표(가로 넓음) | 가로 | 모든 열 한 페이지 | 페이지 번호만 | 가로 먼저 |
| 거래 내역 목록(세로 길음) | 세로 | 배율 100% | 페이지 번호 + 날짜 | 세로 먼저 |
| 감사 제출 보고서 | 세로 | 배율 95~100% | 머리글 없음 | 가로 먼저 |
| 현장 점검 체크리스트 | 세로 | 모든 열 한 페이지 | 페이지 번호 | 세로 먼저 |
첫 행 머리글, 첫 열부터 연속 데이터가 있는 표라는 전제에서 인쇄 영역을 자동 지정하는 매크로 예시이다.
' 연속 영역을 탐지해 인쇄 영역 자동 지정 Sub AutoDefinePrintArea() Dim ws As Worksheet, rng As Range Set ws = ActiveSheet On Error Resume Next Set rng = ws.ListObjects(1).Range On Error GoTo 0 If rng Is Nothing Then Set rng = ws.Range("A1").CurrentRegion End If If Not rng Is Nothing Then ws.PageSetup.PrintArea = rng.Address End If End Sub 최종 배포물은 장치 의존성을 제거하기 위해 PDF로 고정하는 것이 안전하다. 다음 매크로는 시트를 순서대로 PDF로 저장한다.
' 통합 문서를 하나의 PDF로 저장 Sub ExportWorkbookToPDF() Dim path As String path = ThisWorkbook.Path & "\" & Left(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, ".") - 1) & "_print.pdf" Application.PrintCommunication = False Dim ws As Worksheet For Each ws In Worksheets With ws.PageSetup .Zoom = False .FitToPagesWide = 1 .FitToPagesTall = False .Order = xlOverThenDown End With Next ws Application.PrintCommunication = True ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=path, OpenAfterPublish:=False End Sub 프린터 드라이버와 용지 크기 일치 여부를 먼저 확인한다. PDF 가상 프린터로 출력해 미리 보기와 동일하면 장치 차이 영향이다.
반복 영역을 최소화하고 머리글 높이를 줄인다. “모든 열 한 페이지”를 켠 상태에서는 반복 열이 폭에 영향을 주므로 필요한 열만 반복한다.
피벗 옵션에서 “필드 형식 유지”와 “열 너비 자동 조정 해제”를 적용한다. 이후 표 폭을 재측정해 페이지에 맞춘다.
숨김 대신 필터로 대체하는 것을 권장한다. 숨김이 필요하면 인쇄 전 임시 시트로 값만 복사하여 깨끗한 인쇄 전용 시트를 만든다.
병합은 헤더 구간에 한정하고 페이지 경계에서 멀리 배치한다. 본문 데이터 영역에서는 병합을 사용하지 않는다.