페이지 번호(슬라이드번호)를 삽입할 때 제한이 많습니다.

 

사용자가 변경할 수 있는 부분은 

1.디자인 - 슬라이드크기설정에서 슬라이드의 시작번호를 다른 숫자로 바꾸거나

2. 삽입-머리글/바닥글에서 제목슬라이드에 슬라이드번호를 제외하는 정도입니다.

 

특히 구역(section)으로 나눴을 때 구역마다 슬라이드 번호를 다르게 부여하고 싶을 수 있습니다.

각 구역별로 슬라이드번호(페이지번호)를 1부터 새로 시작하는 것입니다.

VBA를 사용해서 위 작업을 자동화시켜보겠습니다.

 

 

더보기
'페이지 번호 추가
Sub AddPageNumberBySection()
    
    Dim pres As Presentation
    Dim sld As Slide, shp As Shape
    Dim s&, f&  'long
    
    Set pres = ActivePresentation
    'pres.Designs(1).SlideMaster.HeadersFooters.SlideNumber.Visible = msoTrue
    
    'each section
    For s = 1 To pres.SectionProperties.Count
        'each slide in a section
        For f = 1 To pres.SectionProperties.SlidesCount(s)
            Set sld = pres.Slides(pres.SectionProperties.FirstSlide(s) + f - 1)
            Set shp = getPageNo(sld)
            If shp Is Nothing Then
                With getPageNo(sld.CustomLayout)
                    Set shp = sld.Shapes.AddPlaceholder(ppPlaceholderSlideNumber, _
                        .Left, .Top, .Width, .Height)
                End With
            End If
            
            With shp.TextFrame.TextRange
                '.InsertSlideNumber  '기본 페이지번호
                .Text = sld.sectionIndex & " - " & f  '구역번호 - 페이지번호
                '.text = "- " & f & " -"              '구역내 페이지 번호
                '.Font.Name = "Calibri"
                '.Font.Size = 12
                '.Font.Color = RGB(137, 137, 137)
                '.ParagraphFormat.Alignment = ppAlignRight
            End With
        Next f
    Next s

End Sub

'페이지 번호 삭제
Sub DeletePageNumber()
    
    Dim pres As Presentation
    Dim sld As Slide, shp As Shape
    Dim s&, i&
    
    'pres.Designs(1).SlideMaster.HeadersFooters.SlideNumber.Visible = msoFalse
   
    Set pres = ActivePresentation
    'each section
    For s = pres.Slides.Count To 1 Step -1
        'each slide in a section
        For i = pres.Slides(s).Shapes.Count To 1 Step -1
            Set shp = pres.Slides(s).Shapes(i)
            If shp.Type = msoPlaceholder Then
                If shp.PlaceholderFormat.Type = ppPlaceholderSlideNumber Then _
                    shp.Delete
            End If
        Next i
    
    Next s

End Sub

'페이지 번호개체 찾기
Function getPageNo(oSld As Variant) As Shape
    
    Dim oShp As Shape
    'Debug.Print oSld.Shapes.Placeholders.Count
    For Each oShp In oSld.Shapes
        If oShp.Type = msoPlaceholder Then
            If oShp.PlaceholderFormat.Type = ppPlaceholderSlideNumber Then
                Set getPageNo = oShp
                Exit For
            End If
        End If
 
    Next oShp
    
End Function

 

위 매크로(AddPageNoBySection)를 실행하면 '구역번호-구역내페이지번호' 형식으로 삽입합니다.

특히 아래 부분을 수정하면 페이지 번호 형식을 세세하게 조절할 수 있습니다.

With shp.TextFrame.TextRange
                '.InsertSlideNumber  '기본 페이지번호
                .Text = sld.sectionIndex & " - " & f  '구역번호 - 페이지번호
                '.text = "- " & f & " -"              '구역내 페이지 번호
                '.Font.Name = "Calibri"
                '.Font.Size = 12
                '.Font.Color = RGB(137, 137, 137)
                '.ParagraphFormat.Alignment = ppAlignRight
            End With

 

DelPageNo 를 실행하거나 삽입-머리말/꼬리말에서 페이지번호에 체크를 해제하면 슬라이드번호를 삭제합니다.

 

아래 첨부한 100페이지짜리 샘플파일을 참고하세요.

 

PageNumberBySection1.pptm
0.15MB

 


번외로, 만일 모든 슬라이드에 페이지 번호를 삽입하되  특정페이지를 제외하고 싶다면 아래 방법을 사용해보세요.

페이지 번호흫 삽입하지 않을 슬라이드는 일단 좌측 미리보기에서 슬라이드를 숨깁니다.

아래 매크로를 실행하면 숨김처리된 슬라이드는 제외하고 모든 슬라이드에 페이지 번호를 삽입해줍니다.

 

더보기
'숨겨진 슬라이드 제외하고 모든 슬라이드에 페이지 번호 추가
Sub AddPageNumber()
    
    Dim pres As Presentation
    Dim sld As Slide, shp As Shape
    Dim p&  'long
    
    Set pres = ActivePresentation
    'pres.Designs(1).SlideMaster.HeadersFooters.SlideNumber.Visible = msoTrue
    
    'each slide
    p = 1
    For Each sld In pres.Slides
        '숨겨지지 않은 슬라이드에 한해 페이지 번호 적용
        If Not sld.SlideShowTransition.Hidden Then
            Set shp = getPageNo(sld)
            If shp Is Nothing Then
                With getPageNo(sld.CustomLayout)
                    Set shp = sld.Shapes.AddPlaceholder(ppPlaceholderSlideNumber, _
                        .Left, .Top, .Width, .Height)
                End With
            End If
            
            With shp.TextFrame.TextRange
                '.InsertSlideNumber  '기본 페이지번호
                '.Text = sld.sectionIndex & " - " & f  '구역번호 - 페이지번호
                .Text = "- " & p & " -"              ' 페이지 번호
                '.Font.Name = "Calibri"
                '.Font.Size = 12
                '.Font.Color = RGB(137, 137, 137)
                '.ParagraphFormat.Alignment = ppAlignRight
                p = p + 1
            End With
        End If
    Next sld

End Sub

인쇄할 때 숨겨진슬라이드 인쇄에 체크하면 숨겨진 슬라이드도 인쇄 가능합니다.

 

다시 페이지번호를 지우고 싶다면 DeletePageNumber 매크로를 실행하거나

삽입-슬라이드번호에서 체크를 해제하고 모든 슬라이드에 적용하면 됩니다.

 

PageNumberA1.pptm
0.09MB