PowerPointの資料作成でページ番号をつけるとき、特定のスライドは配布しないためページ番号を表示せずにスキップしたいことがあります。
しかし、PowerPointでは、ページ番号を途中から振り直したり、セクションごとにページ番号を設定することはできない仕様です。
そこで今回は、簡単なVBAコードで、特定スライドのページ番号をスキップする事例です。
内容:
確認のPowerPointは「Microsoft® PowerPoint® for Microsoft 365 MSO」(バージョン2504)です。
アウトプットイメージ
スライドのノート部分に「【非配布スライド】」と記載されているものはスキップし、それ以外のスライドのみ、テキストボックスでページ番号を連番で付与します。
ページ番号を付与するテキストボックスには、VBAでの追加処理に備え、識別しやすいように「SlideNumber_」で始まる名前を連番で設定します。
このコードのポイントは、ノート部分で「【非配布スライド】」と明記するだけでページ番号をスキップできることです。
具体的なイメージは次のとおりで、ノート部分で「【非配布スライド】」と明記したスライドのページ番号をスキップした連番を付与します。この事例では3番目の「提案の背景」というスライドのページ番号をスキップします。
VBAサンプル
VBAのサンプルは次のとおりです。
Sub スライド番号挿入() Dim sld As Slide Dim shp As Shape Dim slideNumber As Integer slideNumber = 1 ' 全スライドに番号を挿入' For Each sld In ActivePresentation.Slides If Not sld.NotesPage.Shapes.Placeholders(2).TextFrame.TextRange.Text Like "*【非配布スライド】*" Then Set shp = sld.Shapes.AddTextbox(msoTextOrientationHorizontal, _ ActivePresentation.PageSetup.SlideWidth - 100, _ ActivePresentation.PageSetup.SlideHeight - 50, _ 100, 30) shp.TextFrame.TextRange.Text = "P." & slideNumber shp.TextFrame.TextRange.Font.Size = 10 ' フォントサイズを10ポイントに設定' shp.Name = "SlideNumber_" & slideNumber ' 名前を設定' slideNumber = slideNumber + 1 End If Next sld MsgBox "【非配布スライド】を除き、スライドに番号を追加しました。" End Sub
補足説明
- 冒頭のアウトプットイメージは、説明のわかりやすさの都合でテキストボックスの位置、フォントの大きさを修正したVBAコードで実行しています。
- sld.Shapes.AddTextbox(...) により、スライドの右下 (SlideWidth - 100, SlideHeight - 50) にテキストボックスを作成しています。必要に応じて場所を変更します。
参考: PageSetup.SlideWidth プロパティ (PowerPoint) | Microsoft Learn - 「SlideNumber_」で始まる名前をPowerPointで確認する方法は次のとおりです。
以上、PowerPoint VBAでページ番号を特定スライドだけスキップするサンプルでした。
ExcelのVBAで、VBAコードの修正なく利用できるように汎用性を向上させたマクロを「note」で販売しています。スライド番号の修正時間を削減したい方にお勧めです。