PowerPoint VBA

枚数がたくさんあるスライドで、「目次をカウントしないページ番号」と「ダブりのある連番」を全角文字で振りたいあなたへ

                    
                    '※※※※※※※※※※※※※   注  意  書  き   ※※※※※※※※※※※※※
                    '※                                        ※
                    '※ このテキストを全コピーし、        『Ctrl + A』、『Ctrl + C』    ※
                    '※ 当該資料のPowerPointを開き、                         ※
                    '※ VBEを開く(※開発タブ(要設定))     『Alt + F11』           ※
                    '※ 標準モジュールを開く           『「Alt」 → 「I」 → 「M」』   ※
                    '※ このテキストをコードウィンドウに貼り付け 『Ctrl + V』           ※
                    '※ マクロの実行               『F5』              ※
                    '※                                        ※
                    '※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
                    '【使い方】
                    '① スライドにページ番号用のテキストボックス、連番用のテキストボックスを挿入して適当な文字を入力し、任意のフォントに変更
                    '② [ホーム]タブ → [選択] → [オブジェクトの選択と表示]で、①のテキストボックスの名前をマクロ上で使用する名前に変更
                    '※ 「SlideNumberBox」及び「Renban」に変更
                    '③ 全てのスライドに作成したテキストボックスをコピーして貼り付け
                    '※ 全てのスライドのコピーするテキストボックスの名前は「SlideNumberBox」「Renban」である必要あり
                    '④ このマクロを実行
                    '※ スライドを追加削除した場合に連動しませんが、マクロを再度実行すれば番号が更新されます。
                    
                    i = 1   '★ページ番号(開始番号になります。用途に合わせて変更してください。)
                    k = 1   '★連番(開始番号になります。用途に合わせて変更してください。)
                    
                    Sub SetSlideNumbersInExistingTextBox()
                        Dim slide As slide
                        Dim shape As shape
                        Dim shape2 As shape

                        For Each slide In ActivePresentation.Slides
                            On Error Resume Next
                                Set shape = slide.Shapes("SlideNumberBox")
                                Set shape2 = slide.Shapes("Renban")
                                '★ページ番号 目次以外のスライドに「SlideNumberBox」のテキストボックスを配置してください。
                                If Not shape Is Nothing Then
                                    shape.TextFrame.TextRange.Text = StrConv(i, vbWide)     '「= StrConv(slide.SlideNumber, vbWide)」にすると全角の※スライド番号が入ります。
                                    i = i + 1
                                End If
                                '★連番
                                If Not shape2 Is Nothing Then
                                    If slide.SlideNumber <> 29 Or slide.SlideNumber <> 39 Then
                                        shape2.TextFrame.TextRange.Text = StrConv(k, vbWide)
                                        k = k + 1   'この例では、29枚目または39枚目でなければカウントアップしています。
                                    Else
                                        shape2.TextFrame.TextRange.Text = StrConv(k, vbWide)
                                    End If
                                End If
                            On Error GoTo 0
                        Next slide
                    End Sub
                    
                

参考文献・リンク

  1. Microsoft Learn「パワーポイントのスライド番号の全角数字化についてお聞きしたいです。」
    https://learn.microsoft.com/ja-jp/answers/questions/5327666/(ms-)