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」で販売しています。スライド番号の修正時間を削減したい方にお勧めです。