shikumika’s diary

日々の事務作業で手間なことを簡単にできる仕組み(自動化、方法など)、困ったことの解決方法を調べた備忘録

【PowerPoint VBA】ページ番号を特定スライドだけスキップするサンプル

PowerPointの資料作成でページ番号をつけるとき、特定のスライドは配布しないためページ番号を表示せずにスキップしたいことがあります。

しかし、PowerPointでは、ページ番号を途中から振り直したり、セクションごとにページ番号を設定することはできない仕様です。

shikumika.org

そこで今回は、簡単な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で確認する方法は次のとおりです。

    shikumika.org

以上、PowerPoint VBAでページ番号を特定スライドだけスキップするサンプルでした。

ExcelのVBAで、VBAコードの修正なく利用できるように汎用性を向上させたマクロを「note」で販売しています。スライド番号の修正時間を削減したい方にお勧めです。

note.com