만약 1번 슬라이드는 표지로, 2번 슬라이드부터 페이지 번호가 1번이 되게 하고 싶을 때는 아래와 같은 방법이 있습니다.
1. 일단 디자인 - 슬라이드 크기에서 시작 슬라이드번호를 최소로 하면 0으로 바꿀 수 있습니다.
2. 그리고 슬라이드 번호 삽입할 때 제목슬라이드는 제외할 수 있기 때문에 0페이지는 제목슬라이드 레이아웃을 적용한 후에 아래처럼 슬라이드 번호를 삽입합니다.
그런데 예를 들어 1번 슬라이드는 표지로, 2번 슬라이드는 목차를 넣고, 이제 3번 슬라이드부터 페이지 번호가 1번이 되게 하고 싶을 때는 위 기능을 이용해도 3번 슬라이드는 2페이지가 최선입니다. 파워포인트 기본 기능으로는 방법이 없습니다.
이런 경우에 일전에 슬라이드 번호를 구역별로 넣거나
숨겨진 슬라이드를 제외하고 보이는 슬라이드만 슬라이드 번호를 넣는 VBA를 소개한 적이 있습니다.
1, 2번 슬라이드를 숨기고 나머지 페이지만 슬라이드 번호를 VBA로 넣는 방법입니다.
이번에는 숨김여부와 상관없이 초반부 슬라이드는 슬라이드 번호를 삭제하고 원하는 특정 페이지부터 슬라이드 번호를 삽입하는 VBA를 소개합니다. 지난번 슬라이드 번호 넣는 코드를 좀 더 가다듬었습니다.
코드보기
'시작 페이지 지정
Dim PageStart As Integer
Sub ArrangeSlideNumber()
Dim usr As String
Dim pres As Presentation
Dim sld As Slide
Dim shp As Shape, shpNo As Shape
Dim i As Long
Dim l!, t!, w!, h!
Dim Found As Boolean
Set pres = ActivePresentation
'시작 슬라이드 번호 설정
pres.PageSetup.FirstSlideNumber = 1
usr = InputBox("시작 슬라이드 번호를 입력하세요." & vbCr _
& "(3을 입력하면 1,2슬라이드는 번호를 삭제하고 3슬라이드부터 번호를 일괄 입력합니다):", _
"슬라이드 번호 일괄 입력", ActiveWindow.Selection.SlideRange(1).SlideIndex)
If IsNumeric(usr) Then
PageStart= Cint(usr)
If PageStart >= 1 And PageStart <= pres.Slides.Count Then
Else
MsgBox "슬라이드 범위를 벗어납니다.(1~" & pres.Slides.Count & ")"
Exit Sub
End If
Else
Exit Sub
End If
For Each sld In pres.Slides
Found = False
For i = sld.Shapes.Count To 1 Step -1
If sld.Shapes(i).Type = msoPlaceholder Then
If sld.Shapes(i).PlaceholderFormat.Type = ppPlaceholderSlideNumber Then
If sld.SlideIndex < PageStart Then
sld.Shapes(i).Delete
Else
Found = True
AddPageNumber sld.Shapes(i)
End If
End If
End If
Next i
'페이지 번호가 없으면 삽입
If Not Found And sld.SlideIndex >= PageStart Then
Set shpNo = Nothing
With sld.CustomLayout.Shapes.Placeholders
For i = 1 To .Count
If .Item(i).Type = msoPlaceholder Then
If .Item(i).PlaceholderFormat.Type = ppPlaceholderSlideNumber Then
Set shpNo = .Item(i)
Exit For
End If
End If
Next i
End With
'레이아웃에 페이지 번호가 있으면
If Not shpNo Is Nothing Then
l = shpNo.Left
t = shpNo.Top
w = shpNo.Width
h = shpNo.Height
Set shp = sld.Shapes.AddPlaceholder(ppPlaceholderSlideNumber, l, t, w, h)
AddPageNumber shp
End If
End If
Next sld
End Sub
Function AddPageNumber(oShp As Shape)
Dim sld As Slide
Set sld = oShp.Parent
With oShp.TextFrame.TextRange
'.InsertSlideNumber
.Text = sld.SlideIndex - PageStart + 1 '실제 슬라이드 번호 - 2
'.Font.Size = 20
'.Font.Name = "Arial"
'.Font.Color.RGB = rgbBlack
End With
End Function
시작 슬라이드 번호를 묻는 질문대화창이 뜨면
"3"을 입력하면 1,2슬라이드의 페이지 번호는 삭제하고
3슬라이드부터 1페이지로 슬라이드레이아웃의 페이지번호양식대로 페이지 번호를 삽입해줍니다.
시작 슬라이드 번호는 슬라이드 범위 내의 아무 숫자나 가능합니다.
페이지 번호 형식을 단순한 숫자가 아니라 "1/10", "3 / 8" 형식으로 하려면 마지막 부분을 아래처럼 고쳐주세요.
.Text = (sld.SlideIndex - PageStart + 1) & " / " & (sld.Parent.Slides.Count - PageStart + 1)
슬라이드번호의 서식은 각 슬라이드에 적용된 슬라이드마스터 레이아웃의 슬라이드번호 의 양식을 따라갑니다.
위 코드 맨 아래부분에서 임의로 폰트나 글자크기 등을 바꿔줄 수도 있습니다.
매크로는 더이상 필요 없으면 제외하고 일반 .pptx 로 저장해도 무방합니다.
만일 슬라이드 번호를 일괄 삭제하려면 원래 방법대로 아래처럼 삽입-슬라이드번호 에서 슬라이드 번호에 체크를 해제하고 모두 적용을 눌러주면 됩니다.
pptm파일은 다운로드 받은 후에 속성에서 차단해제 적용/확인하시고
파일을 열 때 반드시 매크로를 허용해서 열어야 작동합니다.
만약 특정 페이지부터 페이지 번호를 시작하되
페이지 번호를 왼쪽과 오른쪽으로 번갈아가면서 삽입되게 하려면
링크한 지식인 답변을 참고하세요.
[2022.05.08]
페이지 번호 형식을 1/50 형태로 하고 싶은 경우 혹은 숨긴 슬라이드를 제외하고 페이지 번호를 넣고 싶은 경우는 첨부 파일을 이용하세요.
[2022.05.08]
다음 첨부파일은 슬라이드를 추가/삭제할 때마다 슬라이드 번호가 실시간으로 수정되는 예시입니다.
아래처럼 클래스를 추가하고
Public WithEvents App As PowerPoint.Application
Sub Class_Initialize()
Set App = PowerPoint.Application
End Sub
'Sub App_PresentationNewSlide(ByVal oSld As Slide)
'
' Call ArrangeSlideNumber
'
'End Sub
Sub App_SlideSelectionChanged(ByVal oSldRng As SlideRange)
Call ArrangeSlideNumber
End Sub
모듈 내부에 아래 초기화 내용을 넣고
Dim HostObj As Class1
Sub onLoad()
Set HostObj = New Class1
End Sub
아래 내용을 CustomUI.xml에 추가하여 리본메뉴가 초기화 될 때 onLoad를 실행하게 해서
SlideSelectionChanged 이벤트 클래스가 초기화되로록 합니다.
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"
onLoad="onLoad" ></customUI>
'PPT+VBA' 카테고리의 다른 글
표안의 셀들을 도형으로 변환, 각각 애니메이션 적용하기 (5) | 2021.09.20 |
---|---|
PPT 슬라이드내의 글자 사용빈도 통계 (0) | 2021.09.12 |
그림효과 복사 일괄적용 (0) | 2021.09.12 |
파워포인트 파일을 저장 후 다시 열 때 읽기전용 (Read Only) 로 바뀌는 경우 (0) | 2021.09.08 |
이동경로 애니메이션의 VML 기초 문법 및 수정 방법 (0) | 2021.08.02 |
RGB Color Constants, VBA RGB 색상 예약어 목록 (0) | 2021.07.04 |
pptx의 내용에 문제가 있습니다. 프리젠테이션 복구가 시도될 수 있습니다. (0) | 2021.06.26 |
사진 일괄 삽입 매크로 (3) | 2021.06.08 |
최근댓글