PowerPointでページ番号つけてますか?
スライドにページ番号つけてますか?
私は輪講で使うために,教科書の代わりになるようなスライドを作っています.
教科書の代わりなので,「○ページにも書きましたがー」とか,「△ページの公式にしたがってー」と,何かとページ番号が重要です.
また,スライドの量が多いとき,終わりが見えないスライドって嫌ではないですか?[25/100]と右下に書いてあれば,4分の1終わったなとわかるので,少し気が楽になるというのが学生の気持ちです.
つけて損するものではないので,ページ番号は付けてもらいたいものです.できれば分母のあるタイプで.
分母なしは簡単
分母なしのページ番号は簡単です.
挿入タブに「スライド番号」 もしくは 「ヘッダーとフッター」からスライド番号を表示するかを選ぶことができるので,表示するようにすればいいだけです.
ただし,非表示スライドがあると面倒臭いです,なぜなら非表示スライドにもページ番号を振ってしまうので.
よくこれの解決方法としてあげられているのは,非表示スライドを最後のページの後ろに移動させればいい
という方法なのですが,移動していい非表示スライドって消せばよくないですか?っていうのが私の意見です.
マクロを組めばいいじゃない
マクロで非表示スライド以外にページ番号を振るようにすればいいじゃない!ってことで,組みました.
ベースになっているのは,The Power of PowerPointというサイトで公開されている
『パワーポイントの総スライド数を思い通りに表示する様々な方法』という記事のマクロです.
Const DEFAULT_DIVIDER As String = "/"
Const IS_DENOMINATOR As Boolean = False
Sub SetPageNum()
Dim sld As Slide
Dim shp As Shape
Dim allPagesNum As Integer
Dim disablePageNum As Integer
With ActivePresentation
For i = .Slides.Count To 1 Step -1
With .Slides(i)
If .SlideShowTransition.Hidden = msoFalse Then
allPagesNum = allPagesNum + 1
End If
End With '.Slide(i)
Next i
End With 'ActivePresentation
For Each sld In ActivePresentation.Slides
sld.DisplayMasterShapes = True
If sld.SlideShowTransition.Hidden = msoTrue Then
disablePageNum = disablePageNum + 1
Else
For Each shp In sld.Shapes
If Left(shp.Name, 12) = "Slide Number" Then
Dim str As String: str = sld.SlideNumber - disablePageNum
If IS_DENOMINATOR Then
str = str & DEFAULT_DIVIDER & allPagesNum
End If
shp.TextFrame.TextRange.Text = str
End If
Next
End If
Next
End Sub
改良点として
- 分母をつけるか付けないかの選択フラグを実装(
IS_DENOMINATOR As Boolean
) - 非表示スライドを無視するように変更
の2点があります.最初に非表示スライド以外の総ページ数を数えているので,コードが長くなっていますがご了承ください.
分母なしのスライド番号を振る場合も,非表示スライドを無視して振るならこっちの方が楽です.多分.
ただ...マクロの搭載されたパワーポイントって,毎度注意も出ますし,嫌いな人もいるかもしれませんね.