반응형
- 슬라이드 바닥글을 활용하여 페이지번호를 삽입하는 기능이 있지만,
- 첫째 슬라이드가 아닌 임의의 슬라이드에서 임의의 번호로 시작하는 기능은 없다.
- 더욱이 슬라이드 마스터가 익숙하지 않은 사람이라면 헷갈리기 쉽다.
- 이 매크로는 슬라이드 페이지 번호를 자동으로 삽입해주는 매크로이다.
- 번호의 서식은 자유로이 변경할 수 있고, 빈 슬라이드를 간지로 쓰는 경우에는 레이아웃 인덱스를 지정해서 번호가 붙는것을 방지할 수 있다.
VBA Code
Option Explicit 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 Sub pptx_page_numbering() For i = 1 To ActivePresentation.Slides.Count 'i의 시작점을 다른 숫자로 바꾸면 해당 슬라이드부터 번호 시작 cnt = cnt + 1 '실제 삽입되는 번호 카운팅 If ActivePresentation.Slides(i).CustomLayout.Index = 300 Or _ ActivePresentation.Slides(i).CustomLayout.Name = "레이아웃 이름" Then Else '위 코드는 PT 보고서 중 빈슬라이드(간지)에는 번호를 삽입하지 않는 코드이다. '레이아웃 인덱스를 찾아서 숫자를 넣어주거나, 레이아웃 이름을 지정해서 빈장에는 번호를 삽입하지 않도록 할 수 있다. '간지가 몇 장 안된다면 직접 지워주어도 무방하다. For Each myShp In ActivePresentation.Slides(i).Shapes If myShp.Name Like "*" & "myShp" & "*" Then myShp.Delete End If Next myShp '매크로를 통해 삽입한 임의의 개체임을 나타내기 위해 모든 페이지번호 개체에 "myShp" 이름을 부여 -> 한꺼번에 지울 때 활용 ActivePresentation.Slides(i).Select With ActivePresentation.Slides(i).Shapes.AddShape(Type:=msoShapeRectangle, Left:=500, Top:=515, Width:=40, Height:=20) .Name = "myShp" & i .TextFrame.HorizontalAnchor = msoAnchorCenter .TextFrame.TextRange.Text = cnt '번호 삽입 .TextEffect.Alignment = msoTextEffectAlignmentCentered .TextFrame.TextRange.Font.Color.RGB = RGB(145, 145, 145) .TextFrame.TextRange.Font.Size = 13 .TextFrame.TextRange.Font.Name = "휴먼고딕" .Line.Transparency = 1 .Fill.Transparency = 1 End With ActivePresentation.Slides(i).Shapes("myShp" & i).Select '도형 위치를 슬라이드의 중앙으로 지정하기 위한 방편 ActiveWindow.Selection.ShapeRange.Align aligncmd:=msoAlignCenters, relativeto:=msoTrue ' 번호 삽입 위치를 오른쪽으로 하고 싶은 경우 msoAlignCenters => msoAlignRights로 변경 (2020. 3. 5. Update) End If Next i cnt = 0 End Sub
매크로 실행 동영상
페이지번호 2개 삽입하기
- 하나의 슬라이드 안에 2개 페이지 번호를 삽입하는 방법이다.
- 몇 가지 방법이 있는데, 그냥 무식하게 페이지 번호를 붙이는 코드를 반복해서 쓸 수 있겠다.
- VBA 코드에서 각 페이지 번호가 생성되는 위치(Left, Top)를 지정해주면 된다.
- 디버그 창에서 슬라이드 너비와 높이를 알려주는 코드를 상단에 적어놓았으니 슬라이드 사이즈를 확인하고 번호를 달면 된다.
- 아래 예시 코드를 실행하면 다음 그림과 같이 2개의 페이지 번호가 생성된다.
VBA Code
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) Debug.Print ActivePresentation.SlideMaster.Height '슬라이드의 높이(세로px) For i = 1 To ActivePresentation.Slides.Count 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:=50, Top:=500, Width:=40, Height:=20) .Name = "myShp" & cnt '번호 개체에 식별할 수 있는 ID 부여 '매크로를 통해 삽입한 임의의 개체임을 나타내기 위해 '모든 페이지번호 개체에 "myShp" 이름을 부여 -> 한꺼번에 지울 때 활용 .TextFrame.TextRange.Text = cnt '번호 삽입 '아래는 번호 서식 .TextFrame.HorizontalAnchor = msoAnchorCenter .TextEffect.Alignment = msoTextEffectAlignmentCentered .TextFrame.TextRange.Font.Color.RGB = RGB(145, 145, 145) .TextFrame.TextRange.Font.Size = 13 .TextFrame.TextRange.Font.Name = "휴먼고딕" .Line.Transparency = 1 .Fill.Transparency = 1 End With '---------------------------------------------------------------- '-------------------------------------------------------------- cnt = cnt + 1 '두 번째 페이지 번호 카운팅 ActivePresentation.Slides(i).Select With ActivePresentation.Slides(i).Shapes.AddShape _ (Type:=msoShapeRectangle, Left:=880, Top:=500, Width:=40, Height:=20) .Name = "myShp" & cnt .TextFrame.TextRange.Text = cnt .TextFrame.HorizontalAnchor = msoAnchorCenter .TextEffect.Alignment = msoTextEffectAlignmentCentered .TextFrame.TextRange.Font.Color.RGB = RGB(145, 145, 145) .TextFrame.TextRange.Font.Size = 13 .TextFrame.TextRange.Font.Name = "휴먼고딕" .Line.Transparency = 1 .Fill.Transparency = 1 End With '---------------------------------------------------------------- Next i cnt = 0 End Sub

반응형
'VBA Macro > VBA PowerPoint' 카테고리의 다른 글
[파워포인트 VBA] 그림 크기 일괄 변경하기 (엑셀에서 제어) (7) | 2018.05.04 |
---|---|
파워포인트에 사용된 이미지 일괄 저장 매크로 (0) | 2017.12.14 |
[파워포인트 매크로] 폴더 안의 이미지 확장자 일괄변경 매크로 (0) | 2017.12.06 |
파워포인트 그림 크기 일괄 변경 매크로 #1 (1) | 2017.10.17 |
글꼴(폰트)이 설치된 슬라이드 찾기 매크로 (1) | 2017.10.14 |