글목록

2022년 10월 17일

PowerPoint 매크로 - 새 슬라이드 추가하기

PowerPoint에서 매크로를 작성하다보면, 빈 슬라이드를 계속 추가해야하는 경우가 있습니다.

그런데, Presentation.Slides.AddSlide로 새 슬라이드를 추가하려고 하면, 레이아웃을 필수로 지정해야하는데, 이게 숫자가 아니라 CustomLayout 개체를 입력해주어야 합니다.

Powerpoint에서 대부분의 개체 생성 method는 입력값이 숫자 형태 또는 기껏해야 숫자 배열 형태인 경우가 많아서 쉽게 응용할 수 있지만, AddSlide method에 입력해주어야하는 CustomLayout은 어떻게 처리해야하는지도 모르겠는데, 선택 사항이 아니다보니 오류가 쉽게 발생합니다. 어찌보면 쉬울 것 같은데 말이죠..

아래와 같은 방법으로 오류없이 특정 슬라이드 뒤에 새 슬라이드를 만드는 함수를 생성할 수 있습니다.

---------------------------------------------------------

Function AddNewSlide(iAfter As Long, Optional iMakeBlank As Boolean = False) As Slide
  Dim tIndex As Long
  With ActivePresentation
  '특정 슬라이드 번호(iAfter) 뒤에 새 슬라이드를 추가하도록 슬라이드 번호를 입력합니다.
  '새로 생성하려는 슬라이드의 번호는 입력받은 값 iAfter보다 1 크게 지정합니다.
  '입력받은 슬라이드 번호를 tIndex에 지정한 후, 만약 프리젠테이션에 슬라이드가 없다면 1번 슬라이드를 생성하고, 지정한 슬라이드번호 iAfter가 슬라이드 갯수보다 크면, 마지막 슬라이드 뒤에 새 슬라이드를 생성하도록 합니다.
    tIndex = iAfter
    If .Slides.Count = 0 Then tIndex = 0
    If tIndex > .Slides.Count Then tIndex = .Slides.Count
    If tIndex = 0 Then
     '만약 첫 슬라이드를 생성한다고 하면, 슬라이드 번호는 1번, CustomLayout은 슬라이드마스터에 있는 1번 레이아웃을 불러옵니다.
      Set AddNewSlide = .Slides.AddSlide(1, .SlideMaster.CustomLayouts(1))

    Else
     '이미 슬라이드가 있다면, 추가하려는 슬라이드는 바로 이전 슬라이드의 레이아웃을 불러오도록 합니다.
      Set AddNewSlide = .Slides.AddSlide(tIndex + 1, .Slides(tIndex).CustomLayout)

    End If
  End With
  
   '만약, 슬라이드에 있는 모든 글상자나 도형을 없애고 빈 슬라이드를 만들고 싶다면, 아래와 같이 슬라이드 내에 있는 모든 개체를 삭제합니다.
  If iMakeBlank Then
    For i = tSlide.Shapes.Count To 1 Step -1
      tSlide.Shapes(i).Delete
    Next
  End if
  Set AddNewSlide = tSlide
End Function

---------------------------------------------------------

댓글 없음:

댓글 쓰기

의견이나 질문이 있으신 분은 언제든지 댓글을 달아주세요~

많이 본 글 :