일전에 모 xx 의 제안서 작업을 하기 위해 많은 양의 프레젠테이션을 만들었습니다. 제안서 총 페이지는 수백 페이지에 달할 만큼 굉장히 큰 규모의 프로젝트였고, 제안서에 포함되는 콘텐트의 양은 말할 것도 없었습니다. 그러는 중 프레젠테이션의 목차를 만들어달라는 요청이 들어왔고, 순간 나는 눈앞이 캄캄해졌습니다.

"이 많은 걸 언제 목차로 만들지??? OTL"   

저에게는 딱 두 가지 방법이 떠올랐습니다. 첫 번째는 손수 목차에 페이지의 제목과 페이지 번호를 직접 타이핑하는 방법이고, 두 번째는 뭔지는 모르겠지만 자동화 도구를 이용하는 방법입니다. 일단 시작하는 마음은 무겁지만 최대한 즐겁다고 스스로 주문을 외운 뒤에 하나 하나 목차를 타이핑하여 만들어 가기 시작했으나, 이게 왠 끝이 보이지 않는 겁니다. ㅠ

제안서를 마무리 해야 할 시간은 점점 다가오고, "에라 모르겠다 VSTO 든 스크립트로 하던,,, 도저히 손으로는 못하겠다"    

각설하고, 많은 양의 프레젠테이션의 목차를 만드는 방법을 알려드리지요.

   

파워포인트로 프레젠테이션 목차 만들기

PowerPoint 옵션의 리본 메뉴에 숨어있던 개발 도구 탭 을 활성화

그럼 리본 메뉴에 "개발 도구" 항목이 생깁니다. Visual Basic 을 클릭하여 VBAProject 에서 새로운 사용자 폼을 추가 합니다. 

그리고 대충 아래와 같이 화면을 디자인 하고, Button 을 더블 클릭하여 클릭 이벤트에 코드를 넣습니다. 텍스트박스의 속성 중 MultiLine 을 True 로 지정합니다.

 

   

Private Sub CommandButton1_Click()

Dim title As String
  For i = 1 To ActivePresentation.Slides.Count
    If ActivePresentation.Slides(i).Shapes.HasTitle Then
      If ActivePresentation.Slides(i).Shapes.title.HasTextFrame Then
        If ActivePresentation.Slides(i).Shapes.title.TextFrame.HasText Then
          title = title + ActivePresentation.Slides(i).Shapes.title.TextEffect.Text & " .......... " & ActivePresentation.Slides(i).SlideNumber & vbCrLf
        End If 
      End If
    End If
  Next

Me.TextBox1.Text = title

End Sub    

그리고 스크립트를 실행하면 아래와 같이 멋진 결과를 얻을 수 있다. 보안상 이미지를 흐리게 처리하였습니다.

그리고 위의 결과로 프레젠테이션을 조금만 다듬으면 아래와 같이 멋진 결과를 얻을 수 있다.

   

Posted by 땡초 POWERUMC

댓글을 달아 주세요

  1. 박중석 2009.10.23 11:45 Address Modify/Delete Reply

    와우.. 이거 정말 멋지군요. 게다가 UserForm1 의 압박!

  2. 씩씩한강냉이 2010.08.11 13:08 Address Modify/Delete Reply

    >와, 유용한데요. 감사합니다^^

  3. 황가 2011.11.01 13:17 Address Modify/Delete Reply

    완전 지대!! 유용한 글 감사

  4. 이상균 2015.10.16 14:38 Address Modify/Delete Reply

    안녕하세요
    작성하신 내용 보고 적용 하다 궁금해서 글 남깁니다

    제안서 내용중 하단 부분 중간에 목차가 I-1, I-2 ..... IV-3 이런식으로 들어가는데(바닥글에 넣은건 아니고 페이지 번호 #<#> 부분을 마스터에서 중간으로 변경하여 적용 한것입니다) 해당 부분은
    title = title + ActivePresentation.Slides(i).Shapes.title.TextEffect.Text & " .......... " & 이후 부분을 어떻게 처리 하면 될까요??