shikumika’s diary

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

【Excel VBA】PowerPointのスライド番号を更新するサンプル

Excel VBAでPowerPointにスライド番号を更新する事例です。前回の【Excel VBA】PowerPointにスライド番号を挿入するサンプルでは、ページ番号を新規追加するマクロでした。

今回のマクロと組み合わせて使用することで、

  • 特定ページのスライドのスキップを追加
  • スライド番号の書式設定を維持したまま更新

などが効率的になります。

内容:

なお、確認のExcelは「Microsoft® Excel® for Microsoft 365 MSO」(バージョン2504)です。

必要な背景

前回のマクロでは、新規のページ番号を追加する処理のみを行っていたため、再度実行すると「スライド番号のテキストボックス」が重複してしまう問題がありました。

shikumika.org

そこで、今回のマクロは既存のスライド番号を更新するためのものです。

なお、前提として

  • スライド番号のテキストボックスには、「SlideNumber_」で始まる名前がついている
  • 「SlideNumber_」で始まるテキストボックスについて、連番をふり直した内容に更新する。

という動作をします。

前回のマクロでは、スライド番号のテキストボックスには「SlideNumber_」で始まる名前がつくようにしているので、当該のスライド番号が更新されます。

VBAサンプル

VBAのサンプルは次のとおりです。

Sub PowerPointのスライド番号を更新()

    Dim PowerPointアプリ As Object
    Dim 対象ファイル As Object
    Dim スライド As Object
    Dim テキストボックス As Object
    Dim スライド番号 As Long
    Dim ファイルパス As String
    
    ' プレゼンテーションファイルの選択'
    ファイルパス = Application.GetOpenFilename("PowerPoint Files (*.pptx), *.pptx", , "プレゼンテーションファイルを選択してください")
    If ファイルパス = "False" Then Exit Sub ' ファイルが選択されなかった場合は終了'
    
    スライド番号 = 1

    ' PowerPointアプリケーションを起動'
    Set PowerPointアプリ = CreateObject("PowerPoint.Application")
    PowerPointアプリ.Visible = True
    
    ' プレゼンテーションを開く'
    Set 対象ファイル = PowerPointアプリ.Presentations.Open(ファイルパス)

    ' スライドに番号を更新'
    For Each スライド In 対象ファイル.Slides
        For Each テキストボックス In スライド.Shapes
            If InStr(1, テキストボックス.Name, "SlideNumber", vbTextCompare) > 0 Then
                テキストボックス.TextFrame.TextRange.Text = "P." & スライド番号
                テキストボックス.Name = "SlideNumber_" & スライド番号
                スライド番号 = スライド番号 + 1
            End If
        Next テキストボックス
    Next スライド
    
    ' Excelアプリをアクティブにする'
    AppActivate Application.Caption
    
    MsgBox "スライド番号を更新しました。"

    ' 終了処理'
    Set 対象ファイル = Nothing
    Set PowerPointアプリ = Nothing

End Sub

 

以上、Excel VBAでPowerPointのスライド番号を更新するサンプルでした。

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

note.com