Excel VBAでPowerPointにスライド番号を更新する事例です。前回の【Excel VBA】PowerPointにスライド番号を挿入するサンプルでは、ページ番号を新規追加するマクロでした。
今回のマクロと組み合わせて使用することで、
- 特定ページのスライドのスキップを追加
- スライド番号の書式設定を維持したまま更新
などが効率的になります。
内容:
なお、確認のExcelは「Microsoft® Excel® for Microsoft 365 MSO」(バージョン2504)です。
必要な背景
前回のマクロでは、新規のページ番号を追加する処理のみを行っていたため、再度実行すると「スライド番号のテキストボックス」が重複してしまう問題がありました。
そこで、今回のマクロは既存のスライド番号を更新するためのものです。
なお、前提として
- スライド番号のテキストボックスには、「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」で販売しています。スライド番号の修正時間を削減したい方にお勧めです。