PowerPointを使ったプレゼン資料の作成では、複数のスライドに配置された図形やテキストボックスを一括で整理したいとき、手作業で行うと時間がかかります。
今回は、図形やテキストボックスなどのオブジェクトの名前を検索し、一括で処理する基本パターンです。
内容:
なお、確認のExcelは「Microsoft® Excel® for Microsoft 365 MSO」(バージョン2504)です。
PowerPointのオブジェクトを処理するVBAの用途
PowerPointのスライド内には、テキストボックス、画像、図形などのオブジェクトが配置されています。VBAを活用することで、このオブジェクトの名前を検索し、以下のような処理を行うことができます。
- 図形の一括削除
(不要なオブジェクトを検索して自動で削除) - 図形のサイズ変更や位置調整
(特定の図形を検索し、統一されたデザインに変更) - 特定のテキストを含むオブジェクトの検索と処理
(強調表示やフォント変更など)
活用事例とVBAサンプル
以下は、一括で処理する基本パターンとして、オブジェクト名に含まれる文字をスライド内で検索し、一致したら削除するサンプルです。
この事例では、テキストボックスの名前に"SlideNumber_"を含むかを検索しており、【PowerPoint VBA】ページ番号を特定スライドだけスキップするサンプル - shikumika’s diary で作成したスライド番号を一括削除しています。
Sub PowerPointのスライド番号を削除()
Dim PowerPointアプリ As Object
Dim 対象ファイル As Object
Dim スライド As Object
Dim テキストボックス As Object
Dim ファイルパス As String
' プレゼンテーションファイルの選択'
ファイルパス = Application.GetOpenFilename("PowerPoint Files (*.pptx), *.pptx", , "プレゼンテーションファイルを選択してください")
If ファイルパス = "False" Then Exit Sub ' ファイルが選択されなかった場合は終了'
' PowerPointアプリケーションを起動'
Set PowerPointアプリ = CreateObject("PowerPoint.Application")
PowerPointアプリ.Visible = True
' プレゼンテーションを開く'
Set 対象ファイル = PowerPointアプリ.Presentations.Open(ファイルパス)
' 各スライドを処理'
For Each スライド In 対象ファイル.Slides
' "SlideNumber_" を含むテキストボックスを検索し、削除'
For Each テキストボックス In スライド.Shapes
If InStr(1, テキストボックス.Name, "SlideNumber_", vbTextCompare) > 0 Then
テキストボックス.Delete
End If
Next テキストボックス
Next スライド
' Excelアプリをアクティブにする'
AppActivate Application.Caption
MsgBox "すべてのスライド番号を削除しました。"
' 終了処理'
Set 対象ファイル = Nothing
Set PowerPointアプリ = Nothing
End Sub
以上、Excel VBAでPowerPointのスライド内の図形を一括処理する方法でした。
上記コードをベースに、PowerPointのスライド番号を追加・更新・削除を効率化できるマクロを「note」で販売しています。スライド番号の修正時間を削減したい方にお勧めです。