강의소개

이번 강의에서는 엑셀 PDF 자동 저장 매크로를 작성하고 선택된 범위 또는 지정한 시트를 PDF로 자동으로 출력하는 방법을 알아봅니다. 아울러 PDF 출력 전 인쇄 레이아웃 설정을 위해 PAGE_SETUP 모듈을 사용합니다. PAGE SETUP 명령문에 대한 자세한 설명은 관련 포스트를 참고하세요.

자주 묻는 질문

1. 시트에서 사용중인 전체 범위를 출력하려면 어떻게해야 하나요?

2. 선택범위가 아닌 특정 범위를 지정해서 출력하려면 어떻게해야 하나요?

예제파일 및 E-Book 교재 다운로드

파일구분마지막수정일파일형식파일다운로드
9완성파일2020-01-06XLSM퀵 VBA 파일다운로드
8추가기능2019-12-16XLAM퀵 VBA 파일다운로드
8완성파일2019-12-16ZIP퀵 VBA 파일다운로드
7E-Book2019-11-24PDF퀵 VBA 파일다운로드
7예제파일2019-11-22XLSX퀵 VBA 파일다운로드
6E-Book2019-11-26PDF퀵 VBA 파일다운로드
6예제파일2019-10-26XLSX퀵 VBA 파일다운로드
5E-Book2019-12-15PDF퀵 VBA 파일다운로드
5예제파일2019-12-15XLSX퀵 VBA 파일다운로드
4E-Book2019-10-30PDF퀵 VBA 파일다운로드
4완성파일2019-10-30ZIP퀵 VBA 파일다운로드
3E-Book2019-10-30PDF퀵 VBA 파일다운로드
3예제파일2019-10-30XLSX퀵 VBA 파일다운로드
2완성파일2019-12-22XLSM퀵 VBA 파일다운로드
1완성파일2019-11-27XLSM퀵 VBA 파일다운로드

1. 엑셀을 PDF로 저장하는 방법 (매크로 없이)

엑셀은 PDF 저장기능을 기본적으로 제공하며, 크게 2가지 방법이 있습니다.

  • PDF 파일 형식으로 [다른 이름으로 저장]하기
  • PDF 형식이 지원되는 프린터로 출력하기 (Microsoft Print to PDF, ALPDF, 등)
1-1. PDF 파일 형식으로 '다른 이름으로 저장'

[파일] – [다른 이름으로 저장]을 선택합니다. 이후 파일형식을 'PDF' 로 선택한 뒤 원하는 경로에 파일을 저장합니다.

1-1. pdf 다른이름으로 저장

[다른 이름으로 저장] 에서 엑셀을 PDF 형식으로 저장 할 수 있습니다.

1-2. PDF 출력이 지원되는 프린터로 저장하기 (Microsoft Print to PDF 이용)

Microsoft에서 지원하는 Microsoft Print to PDF 프린터를 사용하여 엑셀을 PDF로 저장할 수 있습니다.

Microsoft Print to PDF 프린터는 윈도우 7 이상 사용자라면 기본으로 설치되어 있으며, 만약 프린터목록에서 보이지 않을 경우 관련링크에 자세히 적어드렸으니 프린터 설치 후 진행하시기 바랍니다.

1-2 인쇄 Microsoft Print to PDF

PDF 출력이 지원되는 프린터를 사용하면 엑셀을 PDF로 보다 쉽게 변환할 수 있습니다.

프린터로 PDF를 출력할 경우 머리말과 꼬릿말, 그리고 한페이지에 열 맞추기 등 다양한 페이지 레이아웃을 설정할 수 있는 장점이 있습니다.

2. 이번 강의 사용된 보조 명령문

이번 강의에서는 총 4개의 보조 명령문과 1개의 보조 모듈이 사용되었습니다. 각 보조 명령문에 대한 자세한 설명은 관련 포스트를 참고하세요.

강의에 사용된 VBA 보조 명령문

FileExists 함수 (VBA) :: 사용자지정함수 [상세설명 및 예제 보러가기]
설명 : 지정한 파일경로의 파일존재여부를 확인합니다. 
구문 : = FileExists ( 파일경로 )
GetDesktopPath 함수 (VBA) :: 사용자지정함수 [상세설명 및 예제 보러가기]
설명 : 사용자 컴퓨터의 바탕화면경로를 출력합니다. 
구문 : = GetDesktopPath ( [백슬래쉬표시] )
FileSequence 함수 (VBA) :: 사용자지정함수 [상세설명 및 예제 보러가기]
설명 : 파일이름이 중복되지 않도록 파일이름에 순번을 매깁니다.
구문 : = FileSequence ( 파일경로, [시작번호] )
ValidFileName 함수 (VBA) :: 사용자지정함수 [상세설명 및 예제 보러가기]
설명 : 지정한 파일이름의 사용가능 여부를 확인합니다.
구문 : = ValidFileName ( 파일경로 )

강의에 사용된 VBA 보조 모듈

PAGE_SETUP 모듈 :: VBA 보조모듈 [상세설명 및 예제 보러가기]
설명 : 시트의 인쇄 레이아웃을 설정합니다.
구문 : PAGE_SETUP ( 해당시트, [머리말], [꼬릿말], [여백], [반복출력], 등… )

3. 엑셀 PDF 저장 매크로 본 명령문 작성

엑셀을 PDF로 저장하기 위한 본 명령문을 작성합니다. 명령문의 이름은 Rng_To_Pdf 로 진행하겠습니다.

VBA 편집창의 [삽입] – [모듈] 을 클릭하여 새로운 모듈을 추가한 뒤 명령문을 작성합니다.

3-1. 인수 설정

본 명령문에는 총 7개의 인수가 들어갑니다. 각 인수는 아래와 같습니다.

인수형식설명기본값
rngSelectRangePDF로 출력할 범위입니다.
FileNameString(Optional) 저장할 파일명입니다."pdf출력"
SavePathString(Optional) 저장 경로입니다.""
DocPropertyBoolean(Optional) 문서속성 저장 여부입니다.True
PrintAreaBoolean(Optional) 기존 인쇄영역 무시 여부입니다.False
OpenPdfBoolean(Optional) 출력 후 PDF 파일 실행 여부 입니다.False
AddSequenceBoolean(Optional) 파일이름 중복 시 순번으로 저장 여부입니다.True

3-2. 변수 설정

대부분의 변수는 명령문의 인수로 이미 받아왔으므로, 2개의 변수만 추가로 생성합니다. 생성할 변수는 아래와 같습니다.

변수명형식설명
WSWorksheetPDF로 출력할 범위의 대상 워크시트입니다.
FilePathString명령문의 인수로 받아온 저장경로와 파일명이 합쳐진 완성된 파일 저장경로입니다.

WS는 명령문에서 받아온 rngSelect 범위의 상위개체인 워크시트로 설정합니다.

FilePath의 경우 ValidFileName 보조명령문을 사용하여 파일경로에 윈도우에서 사용할 수 없는 특수기호가 사용되었는지 여부를 검토한 뒤 다음단계로 넘어갑니다.

3-3. 파일 저장경로 순번 지정

명령문의 AddSequence 값이 True로 입력되면, 저장경로에 중복된 파일이 있을 경우 파일이름 뒤에 순번을 넣어서 저장합니다. (반대로 False 일 경우 파일을 덮어쓰기 합니다.)

따라서, AddSequence 값이 True일 경우 FileSequence 함수를 통해 PDF파일 저장경로에 순번을 지정합니다.

3-4. 선택범위 PDF 출력

선택된 범위를 ExportAsFixedFormat 함수를 사용하여 PDF 파일로 출력합니다. ExportAsFixedFormat(영문설명)에 대한 자세한 설명은 링크를 참고하세요.

ExportAsFixedFormat 에 들어가는 인수는 아래와 같습니다. 각각의 인수는 위에서 이미 받아왔으므로 그대로 대입해주기만 하면 간단히 마무리됩니다.

인수형식설명
TypeXlFixedFormatType범위를 PDF 형식 또는 XPS 형식으로 추출할지 결정
FileNameString저장할 파일 경로입니다.
QualityXlFixedFormatQualityPDF 또는 XPS 의 인쇄 품질입니다.
IncludeDocPropertiesBoolean문서 속성 포함 여부 입니다.
IgnorePrintAreasBoolean기존 설정된 인쇄영역 무시 여부입니다.
FromLong저장을 시작할 페이지 번호입니다.
ToLong저장을 종료할 페이지 번호입니다.
OpenAferPublishBoolean추출 후 파일 실행여부입니다.
FixedFormatExtClassPtrObject다른 형식으로 다시 저장될 수 있도록 FixedFormatExt 클래스로 내보내는 선택 인수입니다.
3-5. PDF 매크로 저장 전체 명령문

4. 작성한 명령문 테스트하기

선택범위를 PDF로 추출하는 명령문이 잘 동작하는지 테스트합니다. 아래와 같이 테스트 명령문을 작성합니다. 본 강의에 사용된 예제파일에서 [급여명세서] 시트는 Sheet4에 해당합니다. 따라서 Sheet4를 기준으로 인쇄 레이아웃을 설정한 뒤 선택한 범위를 PDF로 추출한다는 가정하에 명령문을 작성합니다.

4-0. Sheet4 급여명세서

강의에서 사용된 예제파일의 [급여명세서] 시트의 시트ID는 'Sheet4' 입니다.

Page_Setup (인쇄 레이아웃 설정) 모듈에 대한 자세한 설명은 관련 링크를 참고하세요.

명령문을 작성한 뒤 엑셀의 [급여명세서] 시트로 이동합니다. 이후 상단 [개발도구] – [삽입]에서 '양식컨트롤'의 [단추]를 추가합니다.

4-1. 개발도구 양식 단추 추가

[개발도구] – [삽입] 에서 양식컨트롤 단추를 추가합니다.

새로운 팝업창 목록에서 우리가 방금 작성한 Test 명령문을 선택합니다. 이후 단추의 이름을 본인이 원하는 단추이름으로 변경합니다. 예제에서는 '선택영역을 pdf로 추출'이라고 변경하였습니다.

4-2 개발도구 매크로 지정

방금 작성한 Test 명령문을 단추에 연결한 뒤, 단추이름을 원하는 문장으로 변경합니다.

[급여명세서] 시트에서 범위를 선택 후 버튼을 클릭하면 바탕화면에 직원명과 년도 및 월이 적힌 파일명으로 PDF 파일이 저장됩니다.

4-3 범위 선택 후 pdf 출력

버튼을 클릭하면 선택한 범위가 바탕화면에 PDF파일로 저장됩니다.

PDF파일을 실행합니다. 좌측 상단에는 직원명과 해당기간, 우측상단에는 PDF를 저장한 시간이 출력됩니다. 머리말 및 꼬릿말은 Page_Setup 모듈을 사용하여 본인이 원하는 형태로 마음껏 변경해서 사용할 수 있습니다.

4-4 머릿말 꼬릿말

머리말과 꼬릿말 등의 다양한 인쇄 레이아웃 설정도 변경할 수 있습니다.

5. 시트 전체 또는 고정된 범위를 PDF로 저장하는 매크로 명령문 (응용)

5-1. 시트에서 사용 중인 전체 범위를 PDF로 출력하기

워크시트의 UsedRange 속성을 사용하여 시트에서 사용중인 범위를 자동으로 받아와 PDF로 저장합니다. UsedRange(영문설명)에 대한 설명은 마이크로소프트 홈페이지 관련 링크를 참고하세요.

5-2. 고정된 범위를 PDF로 출력하기

시트의 고정된 범위를 PDF로 저장할 수도 있습니다. 아래 예제는 [급여명세서] 시트의 'B2:E18' 범위를 지정하여 PDF로 출력하는 명령문입니다.

 

댓글 남기기

avatar
  현재 페이지 댓글알림 신청  
알림 설정