- 최초 작성일: 2017-08-10
- 최종 수정일: 2026-09-30
- 조회수: 15 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: VBA 파워 코딩 237회 - 특정 영역을 PPT로
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
이번 시간에는 엑셀의 특정 영역을 파워포인트로 내보내는 방법에 대해 알아보겠습니다. 보고서에 쓸 표나 차트를 매번 수작업으로 복사·붙여넣기 하는 대신, 버튼 한 번으로 새 슬라이드에 삽입되도록 만들어 보겠습니다.
워크시트의 특정 영역을 PPT 슬라이드로 보내기
핵심 요약: 워크시트 영역을 PPT 슬라이드로 내보내는 ExportRangeToSlide
ExportRangeToSlide 프로시저는 워크시트의 지정한 영역을 CopyPicture로 그림 복사하여, 새로 만든 파워포인트 슬라이드에 붙여넣고 가운데 정렬합니다.
- 사전 준비: VBE '도구 - 참조'에서 Microsoft PowerPoint Object Library 체크
- 대상 영역: Workplace 시트의 A2:O14
- 핵심 메서드: Range.CopyPicture → Shapes.Paste → ShapeRange.Align
- 결과: 제목이 있는 새 슬라이드에 표/차트 이미지 삽입
참조 지정하기
코드를 실행하기 전에 먼저 '참조 지정'을 해 주어야 합니다. <Alt> + <F11> 키를 눌러 VBE를 연 다음, '도구 - 참조' 메뉴를 선택합니다. '사용 가능한 참조 목록'에서 'Microsoft PowerPoint XX.0 Object Library'에 체크 표시를 합니다. 설치된 오피스 버전에 따라 숫자는 다를 수 있습니다.
이 부분에 체크가 되어 있지 않으면 다음과 같은 오류 메시지를 만나게 됩니다.
ExportRangeToSlide 프로시저 작성하기
참조 지정을 마쳤다면 다음 코드를 표준 모듈에 입력합니다. 'Workplace' 시트의 'A2:O14' 영역을 새로운 PPT 파일의 슬라이드에 그림으로 삽입합니다.
Sub ExportRangeToSlide()
Dim PPT As PowerPoint.Application
Dim PPTPresent As PowerPoint.Presentation
Dim PPTSlide As PowerPoint.Slide
Dim strTitle As String
Set PPT = New PowerPoint.Application
Set PPTPresent = PPT.Presentations.Add
PPT.Visible = True
Set PPTSlide = PPTPresent.Slides.Add(1, ppLayoutTitleOnly)
strTitle = "영업팀별/제품별 실적"
PPTSlide.Select
Sheets("Workplace").Range("A2:O14").CopyPicture Appearance:=xlScreen, Format:=xlPicture
PPTSlide.Shapes.Paste.Select
With PPT.ActiveWindow.Selection.ShapeRange
.Align msoAlignCenters, True
.Align msoAlignMiddles, True
End With
PPTSlide.Shapes.Title.TextFrame.TextRange.Text = strTitle
End Sub
코드 설명
PowerPoint.Application 개체를 새로 만들고 Presentations.Add로 새 프레젠테이션을, Slides.Add(1, ppLayoutTitleOnly)로 제목만 있는 슬라이드를 추가합니다. 워크시트 범위는 CopyPicture로 그림으로 복사한 뒤 Shapes.Paste로 슬라이드에 붙여넣고, ShapeRange.Align로 가로·세로 가운데 정렬합니다.
코드를 실행하면 다음과 같이 워크시트 영역이 그대로 그림으로 복사되어 슬라이드 제목과 함께 삽입됩니다.
참고: 이미지에 대하여
본문의 참조 대화상자·오류 메시지·실행 결과 이미지는 원본 예제 파일에 포함되어 있던 실제 스크린샷을 그대로 사용했습니다.
PPT를 다루다보니 접근하는 개체가 생소하게 느껴질 수 있지만, 기술적으로 크게 어려운 부분은 없습니다.
정리 — ExportRangeToSlide 프로시저
| 단계 | 핵심 코드 |
|---|---|
| 참조 지정 | VBE '도구 - 참조'에서 Microsoft PowerPoint Object Library 체크 |
| 슬라이드 준비 | PPTPresent.Slides.Add(1, ppLayoutTitleOnly) |
| 영역 복사 | Range("A2:O14").CopyPicture Appearance:=xlScreen, Format:=xlPicture |
| 삽입/정렬 | Shapes.Paste → ShapeRange.Align msoAlignCenters/msoAlignMiddles |
자주 묻는 질문 (FAQ)
Q1. '사용자 정의 형식이 정의되지 않았습니다' 오류가 발생합니다.
PowerPoint 개체 라이브러리 참조가 지정되지 않았을 때 나타나는 오류입니다. VBE에서 '도구 - 참조' 메뉴를 열어 'Microsoft PowerPoint XX.0 Object Library'에 체크 표시를 해 주세요.
Q2. 다른 영역을 내보내고 싶으면 어떻게 하나요?
코드의 Sheets("Workplace").Range("A2:O14") 부분에서 시트 이름과 범위 주소를 원하는 값으로 바꿔 주면 됩니다.
Q3. 여러 영역을 각각 다른 슬라이드에 넣을 수도 있나요?
네. 이번 코드를 반복문으로 감싸거나, 다음 회차에서 다룰 '여러 시트를 각각의 슬라이드로 내보내기' 방식을 응용하면 가능합니다.
마치며
PPT를 다루다 보면 낯선 개체들을 만나게 되지만, 원리는 워크시트 개체를 다루는 것과 크게 다르지 않습니다. 참조 지정만 잊지 않는다면 어렵지 않게 응용하실 수 있을 거예요!