top of page

【AI対応】PowerPoint VBAでページ番号を「画像」として各スライド右下に自動挿入する方法

執筆者の写真: 伊賀上真左彦
伊賀上真左彦
4月26日
読了時間: 5分

PowerPointで資料を作っていると、各スライドの右下にページ番号を入れたい場面があります。


通常はフッター機能やスライド番号を使えばよいのですが、案件によっては、

  • ページ番号を画像として扱いたい

  • 既存テンプレートのフッター機能を使いたくない

  • スライド番号を毎回同じ位置・同じ見た目で入れたい

  • 再実行時に古い番号を消して貼り直したい

  • 複数ファイルで使えるように、PowerPointアドイン化したい

というケースがあります。


近年、AIを使い「画像」としてスライドを作る場合が増えています。その場合、パワーポイントの従来の機能ではページ番号を入れることができません。ページ番号の上に画像を張り付けていますから。


この記事では、PowerPoint VBAを使って、各スライド右下にページ番号をPNG画像として挿入する方法を紹介します。


さらに、マクロを個別ファイルではなくPowerPointアドインとして登録し、PowerPointアプリ側に機能として仕込む方法も解説します。


完成イメージ

このVBAでは、次の処理を行います。


  1. 各スライドを順番に処理する

  2. 前回このマクロで挿入したページ番号画像を削除する

  3. スライド番号のテキストボックスを一時的に作成する

  4. そのテキストボックスをPNG画像として書き出す

  5. 書き出したPNGを右下に画像として挿入する

  6. 挿入した画像にタグを付け、次回実行時に削除対象として識別する


ポイントは、単なるテキストボックスではなく、最終的に「画像」として貼ることです。マクロは何度でも実行可能で、その場合、前回貼り付けたページ数の画像はいったん削除されます。


下準備


PowerPointでVBAを使った経験がない方は、以下の準備を行ってください。


①「ファイル」>「その他」>「オプション」から設定画面を開く


②「リボンのユーザー設定」から「開発」にチェックを入れて、「OK」をクリック


③「開発」>「マクロのセキュリティ」>「すべてのマクロを有効にする」>「OK」をクリック



これは一定のリスクがある行為ですが、自分が作成したマクロを使う分には注意は不要と考えます。





VBAコード

PowerPointのVBAエディタで標準モジュールを作成し、以下のコードを貼り付けます。



方法

①「開発」>「Visual Basic」をクリック


②「挿入」>「標準モジュール」をクリック



③追加された「Module1」に以下のコードを張り付ける




Option Explicit


Sub InsertPageNumbersAsImages()


Const TAG_KEY As String = "AutoPageNumberImage"

Const NAME_PREFIX As String = "AutoPageNumberImage_"


' 表示調整

Const IMG_WIDTH As Single = 36

Const IMG_HEIGHT As Single = 18

Const MARGIN_RIGHT As Single = 18

Const MARGIN_BOTTOM As Single = 12


Const FONT_NAME As String = "Yu Gothic"

Const FONT_SIZE As Single = 10


Dim pres As Presentation

Dim sld As Slide

Dim shp As Shape

Dim tmpText As Shape

Dim pageImg As Shape

Dim i As Long

Dim pageNo As Long

Dim tmpPath As String


Set pres = ActivePresentation


' 既存のページ番号画像を削除

For Each sld In pres.Slides

For i = sld.Shapes.Count To 1 Step -1

Set shp = sld.Shapes(i)


If shp.Name Like NAME_PREFIX & "*" Then

shp.Delete

Else

On Error Resume Next

If shp.Tags(TAG_KEY) = "1" Then shp.Delete

On Error GoTo 0

End If

Next i

Next sld


' 新しいページ番号画像を挿入

For Each sld In pres.Slides


pageNo = sld.SlideIndex

tmpPath = Environ$("TEMP") & "\ppt_page_number_" & pageNo & ".png"


' いったんテキストボックスを作る

Set tmpText = sld.Shapes.AddTextbox( _

Orientation:=msoTextOrientationHorizontal, _

Left:=0, _

Top:=0, _

Width:=IMG_WIDTH, _

Height:=IMG_HEIGHT)


With tmpText

.Name = "TempPageNumberText"

.Fill.Visible = msoFalse

.Line.Visible = msoFalse


With .TextFrame2

.VerticalAnchor = msoAnchorMiddle

.MarginLeft = 0

.MarginRight = 0

.MarginTop = 0

.MarginBottom = 0


With .TextRange

.Text = CStr(pageNo)

.ParagraphFormat.Alignment = msoAlignCenter

With .Font

.Name = FONT_NAME

.Size = FONT_SIZE

.Fill.ForeColor.RGB = RGB(80, 80, 80)

End With

End With

End With


' テキストボックスをPNGとして書き出す

.Export tmpPath, ppShapeFormatPNG

.Delete

End With


' PNG画像として右下に挿入

Set pageImg = sld.Shapes.AddPicture( _

FileName:=tmpPath, _

LinkToFile:=msoFalse, _

SaveWithDocument:=msoTrue, _

Left:=pres.PageSetup.SlideWidth - IMG_WIDTH - MARGIN_RIGHT, _

Top:=pres.PageSetup.SlideHeight - IMG_HEIGHT - MARGIN_BOTTOM, _

Width:=IMG_WIDTH, _

Height:=IMG_HEIGHT)


With pageImg

.Name = NAME_PREFIX & pageNo

.Tags.Add TAG_KEY, "1"

End With


On Error Resume Next

Kill tmpPath

On Error GoTo 0


Next sld


MsgBox "ページ番号画像を更新しました。", vbInformation


End Sub


PowerPointアドインとして登録する

このマクロを特定のPowerPointファイルに入れるだけだと、そのファイルでしか使えません。複数の資料で使いたい場合は、PowerPointアドインとして保存します。



アドイン化の手順

  1. PowerPointで新規プレゼンテーションを作成する

  2. Alt + F11 でVBAエディタを開く

  3. 標準モジュールにマクロを貼り付ける

  4. PowerPointに戻る

  5. 名前を付けて保存 を選ぶ

  6. ファイルの種類で PowerPoint アドイン(*.ppam) を選ぶ

  7. 任意の場所に保存する

  8. PowerPointの ファイル → オプション → アドイン を開く

  9. 下部の 管理: PowerPoint アドイン を選び、設定 をクリックする

  10. 新規追加 から保存した .ppam を選択する


これで、PowerPointアプリ側にマクロを登録できます。

以後は、どのプレゼンテーションを開いていても、現在開いているファイルに対してページ番号画像を挿入できます。



クイックアクセスツールバーに登録すると便利

アドインとして登録しただけでは、毎回マクロ一覧から実行する必要があります。

よく使う場合は、クイックアクセスツールバーに登録しておくと便利です。

手順は次のとおりです。


  1. PowerPointの ファイル → オプション を開く

  2. クイック アクセス ツール バー を選ぶ

  3. コマンドの選択 で マクロ を選ぶ

  4. InsertPageNumbersAsImages を選択する

  5. 追加 をクリックする

  6. 必要に応じてアイコンや表示名を変更する

  7. OK を押す


これで、ボタン1つでページ番号画像を更新できます。


注意点

既存の手動ページ番号は削除されない

このマクロが削除するのは、マクロ自身が挿入したページ番号画像だけです。

名前やタグで識別しているため、手動で配置した別の画像やテキストは削除しません。


スライドの順番を変えたら再実行する

ページ番号は実行時点の SlideIndex を使っています。

スライドの順番を変えた場合は、もう一度マクロを実行してください。古い番号を削除して、現在の順番に合わせて貼り直されます。


一時PNGはTEMPフォルダに作成される

画像化のため、一時的にPNGファイルを作っています。

tmpPath = Environ$("TEMP") & "\ppt_page_number_" & pageNo & ".png"

挿入後に削除していますが、環境によって削除に失敗する可能性もあります。通常は大きな問題にはなりません。


まとめ

PowerPoint VBAを使うと、ページ番号を単なるテキストではなく画像として挿入できます。

今回の方法では、

  • 各スライド右下にページ番号を画像として挿入

  • 前回挿入した番号画像を自動削除

  • スライド順に合わせて番号を再生成

  • PowerPointアドイン化して複数ファイルで利用可能

  • クイックアクセスツールバーからワンクリック実行可能

という仕組みを作れます。


フッター機能では対応しにくいレイアウトや、画像として固定したい資料作成フローで役立つ方法です。


 
 
 

コメント


Codex 画像 2026年8月30日 14_42_45.png

書籍「集中力ファースト」を元に、仕事と勉強の効率を高め、ストレスを減らす方法をご紹介しています

Codex 画像 2026年8月30日 15_15_33.png

AIなども含めた、全ての記事をまとめています
 

image.png

Outlookを中心としたメール効率化、自動化、誤送信低減の方法をご紹介しています
 

bottom of page