shikumika’s diary

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

【Excel VBA】PowerPointにスライド番号を挿入するサンプル

Excel VBAでPowerPointにスライド番号を挿入する事例です。このサンプルでは、特定のスライドのページ番号をスキップする方法も含まれています。

内容:

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

必要な背景

この事例が必要な背景は、PowerPointの標準機能には特定のページをスキップした自動連番を付与する機能がないためです。

その解決方法として、PowerPointのVBAを使用した解決方法は次のとおりです。

shikumika.org

しかし、VBAを使用してページ番号を付与したPowerPointを保存する際には、「PowerPoint マクロ有効プレゼンテーション (*.pptm)」形式で保存する必要があり、汎用的な活用に課題が生じます。

そこで、ExcelのVBAで対象のPowerPointファイルを指定し、操作する事例です。

アウトプットイメージ

前述の【PowerPoint VBA】ページ番号を特定スライドだけスキップするサンプルをExcelのVBAで動作するように変換します。

VBAサンプル

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

Sub PowerPointにスライド番号挿入()

    Dim PowerPointアプリ As Object
    Dim 対象ファイル As Object
    Dim スライド As Object
    Dim テキストボックス As Object
    Dim スライド番号 As Long
    
     ' プレゼンテーションファイルの選択'
    ファイルパス = 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
        If Not スライド.NotesPage.Shapes.Placeholders(2).TextFrame.TextRange.Text Like "*【非配布スライド】*" Then
            Set テキストボックス = スライド.Shapes.AddTextbox(msoTextOrientationHorizontal, _
                対象ファイル.PageSetup.SlideWidth - 100, _
                対象ファイル.PageSetup.SlideHeight - 50, _
                100, 30)
            テキストボックス.TextFrame.TextRange.Text = "P." & スライド番号
            テキストボックス.TextFrame.TextRange.Font.Size = 12  ' フォントサイズを12ポイントに設定'
            テキストボックス.Name = "SlideNumber_" & スライド番号  ' 名前を設定'
            スライド番号 = スライド番号 + 1
        End If
    Next スライド
    
    ' Excelアプリをアクティブにする'
    AppActivate Application.Caption
    
    MsgBox "【非配布スライド】を除き、スライドに番号を追加しました。"
    

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

End Sub

 

以上、Excel VBAでPowerPointにスライド番号を挿入するサンプルでした。

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

note.com