shikumika’s diary

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

【Excel VBA】PowerPointのスライド内の図形を一括処理する方法

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

note.com