본문 바로가기

프로그래밍

Visual Basic 코드를 활용한 ppt 페이지 삽입

기본적인 페이지 삽입으로도 페이지 삽입은 충분히 할 수 있다.

문제는 내가 원하는 페이지들에만 페이지를 삽입하고 싶을 때 생긴다.

excel은 visual basic을 이용한 코딩을 하여 커스터마이징이 가능하다.

파워포인트에도 visual basic이 지원되므로 커스터마이징이 가능할 것 같아서 검색했다.

 

 

출처 : https://ruahneuma.tistory.com/entry/%ED%8C%8C%EC%9B%8C%ED%8F%AC%EC%9D%B8%ED%8A%B8-%EC%8A%AC%EB%9D%BC%EC%9D%B4%EB%93%9C-%EB%B2%88%ED%98%B8-%EC%82%BD%EC%9E%85-%EB%A7%A4%ED%81%AC%EB%A1%9C

 

파워포인트 슬라이드 번호 삽입 매크로

슬라이드 바닥글을 활용하여 페이지번호를 삽입하는 기능이 있지만, 첫째 슬라이드가 아닌 임의의 슬라이드에서 임의의 번호로 시작하는 기능은 없다. 더욱이 슬라이드 마스터가 익숙하지 않

ruahneuma.tistory.com

위 포스팅의 코드를 내 입맛에 맞게 변경했다.

슬라이드 우측 하단에 페이지를 표시한다.

 

1. 파일 클릭

2. 옵션 클릭

 

3. 개발 도구 체크

4. 개발 도구 클릭 후 Visual Basic 클릭

5. 삽입 -> 모듈 선택

 

6. 아래 코드를 복사 & 붙여넣기

Option Explicit
Sub pptx_page_numbering()
Dim i As Long, cnt As Long
Dim sld_height As Long, sld_width As Long
Dim mySlide As Slide, myShp As Shape
Dim page_style As String

'디버그 확인 방법
'보기 -> 직접 실행창 클릭하면 화면 하단에 나타남
'만약 나타나지 않는다면 보기->도구모음->디버그 클릭 후 다시 직접 실행창 확인

Debug.Print ActivePresentation.SlideMaster.Width  '슬라이드의 너비(가로px) (780 나옴)
Debug.Print ActivePresentation.SlideMaster.Height '슬라이드의 높이(세로px) (540 나옴)
        
For i = 3 To (ActivePresentation.Slides.Count - 1)
  For Each myShp In ActivePresentation.Slides(i).Shapes
    If myShp.Name Like "*" & "myShp" & "*" Then
      myShp.Delete
    End If
Next myShp
                
        
'2개의 페이지 번호를 넣기 위해 아래 절취선 부분을 반복
'동일한 페이지 번호를 만들어주되 Left, Top 좌표만 변경
          
'--------------------------------------------------------------
        
cnt = cnt + 1 '실제 삽입되는 번호 카운팅
        
ActivePresentation.Slides(i).Select
  With ActivePresentation.Slides(i).Shapes.AddShape _
    (Type:=msoShapeRectangle, Left:=680, Top:=500, Width:=100, Height:=20)
              
    .Name = "myShp" & cnt '번호 개체에 식별할 수 있는 ID 부여
    '매크로를 통해 삽입한 임의의 개체임을 나타내기 위해
    '모든 페이지번호 개체에 "myShp" 이름을 부여 -> 한꺼번에 지울 때 활용
              
    .TextFrame.TextRange.Text = "" & cnt & "/" & (ActivePresentation.Slides.Count - 3) '번호 삽입
                    
    '아래는 번호 서식
                    
    .TextFrame.HorizontalAnchor = msoAnchorCenter
    .TextEffect.Alignment = msoTextEffectAlignmentCentered
    .TextFrame.TextRange.Font.Color.RGB = RGB(145, 145, 145)
    .TextFrame.TextRange.Font.Size = 20
    .TextFrame.TextRange.Font.Name = "에스코어 드림 7 ExtraBold"
    .Line.Transparency = 1
    .Fill.Transparency = 1
            
  End With
          
Next i
       
cnt = 0
 
End Sub

7. 화면 상단의 녹색 화살표 선택

8. Visual Basic 화면을 끄고 파워포인트 화면 확인해보기