• 최초 작성일: 2017-08-10
  • 최종 수정일: 2026-09-30
  • 조회수: 15 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: VBA 파워 코딩 237회 - 특정 영역을 PPT로

들어가기 전에

오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.

이번 시간에는 엑셀의 특정 영역을 파워포인트로 내보내는 방법에 대해 알아보겠습니다. 보고서에 쓸 표나 차트를 매번 수작업으로 복사·붙여넣기 하는 대신, 버튼 한 번으로 새 슬라이드에 삽입되도록 만들어 보겠습니다.

권현욱(엑셀러)
저자: 권현욱(엑셀러), 아이엑셀러 대표

필자는 Excel 컨설턴트, 작가, 그리고 크리에이터입니다. 현재 Microsoft Excel MVP이며, 『챗GPT+엑셀 업무자동화 정석』을 비롯한 10여 권의 도서를 집필했습니다. Excel 자동화 및 생산성 향상 분야에서 25년 넘는 경력을 보유하고 있습니다.

권현욱(엑셀러) 님의 최신 포스트:
  • 최신 글을 불러오는 중...


26년 경력 Microsoft MVP 권현욱(엑셀러) 대표 직강 1강 무료

🎁 파워툴스 마스터클래스 · 엑셀 바이브 코딩

AI에게 말로 지시해서 '나만의 엑셀 도구'를 만들고 리본에 장착합니다.

  • 코딩 지식 없이 시작 · 코드는 AI가 작성
  • 엑셀 리본에 내 탭과 버튼을 만들고 XLAM으로 공유
  • 1강 무료 수강 가능
수강 신청하기 강의 소개 보기

워크시트의 특정 영역을 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'에 체크 표시를 합니다. 설치된 오피스 버전에 따라 숫자는 다를 수 있습니다.

VBA 프로젝트 참조 대화상자에서 Microsoft PowerPoint 16.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를 다루다 보면 낯선 개체들을 만나게 되지만, 원리는 워크시트 개체를 다루는 것과 크게 다르지 않습니다. 참조 지정만 잊지 않는다면 어렵지 않게 응용하실 수 있을 거예요!