PowerPointの資料作成では、スライド番号を入れる、タイトルの書式を揃える、定型の案内ページを追加するなど、内容を考える前に同じ操作を繰り返すことがあります。PowerPoint VBAを使うと、スライド・図形・テキストを順番に操作して、この定型作業をまとめて処理できます。まずはオブジェクトの関係と安全な実行方法を理解し、小さなマクロから始めます。
VISUAL GUIDE
PowerPoint VBAの処理の流れ
PowerPointでは、プレゼンテーションの中にスライドがあり、スライドの中に図形やテキストがあります。この階層を意識すると、操作対象を指定しやすくなります。
PowerPoint VBAで自動化しやすい作業
自動化しやすいのは、手順と対象が決まっている作業です。全スライドへのページ番号追加、タイトルのフォント統一、定型の免責事項や問い合わせ先の追加、表紙やアジェンダの作成などが候補になります。
一方で、文章の良し悪しやレイアウトの最終判断まで完全に自動化するのは難しい場合があります。VBAには繰り返し作業を任せ、人が内容と見た目を確認する役割分担にすると、使いどころが分かりやすくなります。
- 全ページへの番号・日付の追加
- タイトルや本文の書式統一
- 定型スライドの追加
- 資料の確認用ラベル付け
最初に覚えるPowerPointのオブジェクト階層
VBAのコードでは、どのプレゼンテーションの、何枚目のスライドの、どの図形を操作するかを指定します。ActivePresentationは現在開いているプレゼンテーション、Slides(1)は1枚目のスライド、Shapesはそのスライド上の図形の集まりです。
文字はShapeのTextFrameからTextRangeへ進んで操作します。操作対象を省略すると、別のプレゼンテーションや選択中の図形を変更することがあるため、初心者のうちは対象をできるだけ明示します。
| オブジェクト | 役割 | コードの例 |
|---|---|---|
| Presentation | プレゼンテーション全体 | ActivePresentation |
| Slide | 1枚のスライド | ActivePresentation.Slides(1) |
| Shape | 図形・画像・プレースホルダー | sld.Shapes(1) |
| TextFrame / TextRange | 図形内の文字 | shp.TextFrame.TextRange |
マクロを保存・実行する前の準備
PowerPointでマクロを保存するファイルは、通常のpptxではなく、マクロ有効プレゼンテーション(pptm)を使います。開発タブからVisual Basicを開き、標準モジュールへコードを置きます。最初はコピーした練習用ファイルで実行してください。
マクロの設定を一時的に変える場合も、信頼できるファイルだけで行い、作業後は安全な設定へ戻します。インターネットから入手した資料に含まれるコードは、目的と内容が分からないまま有効にしないことが重要です。
- 練習用のpptmファイルを作る
- 開発タブとVisual Basicを確認する
- 元ファイルを複製してから実行する
- 不明なファイルのマクロは有効にしない
全スライドにページ番号を入れる
次のマクロは、全スライドの右下に番号用のテキストボックスを追加します。座標やサイズは資料のテーマに合わせて調整できます。実行するたびに新しいテキストボックスが増えるため、まずコピーした資料で試し、繰り返し実行しない運用にするか、既存の番号を探して更新する処理へ発展させます。
Option Explicit
Sub AddSlideNumbers()
Dim sld As Slide
Dim box As Shape
Dim slideIndex As Long
For Each sld In ActivePresentation.Slides
slideIndex = slideIndex + 1
Set box = sld.Shapes.AddTextbox( _
Orientation:=msoTextOrientationHorizontal, _
Left:=ActivePresentation.PageSetup.SlideWidth - 90, _
Top:=ActivePresentation.PageSetup.SlideHeight - 35, _
Width:=60, Height:=20)
box.TextFrame.TextRange.Text = CStr(slideIndex)
box.TextFrame.TextRange.Font.Size = 10
Next sld
End Subポイント:同じマクロを再実行すると番号が重複します。実務では、追加した図形に名前を付けておき、同じ名前の図形があれば更新する方法も検討します。
タイトルの書式を一括で整える
スライドごとにタイトルを選び、フォントやサイズを変更する作業も、レイアウトが統一されている資料なら自動化できます。HasTitleでタイトルの有無を確認してから処理するため、タイトルのないスライドでエラーになりにくい構成です。
Option Explicit
Sub FormatSlideTitles()
Dim sld As Slide
For Each sld In ActivePresentation.Slides
If sld.Shapes.HasTitle Then
With sld.Shapes.Title.TextFrame.TextRange.Font
.Name = "Yu Gothic"
.Size = 24
.Bold = msoTrue
End With
End If
Next sld
End Subポイント:テーマや環境によってフォント名が利用できないことがあります。実行後は、文字が欠けていないか、タイトルが長いスライドで折り返しが崩れていないかを確認します。
定型スライドを追加してテキストを入れる
研修資料や社内説明会では、冒頭に「本日の流れ」、最後に「問い合わせ先」など同じ構成のスライドを追加することがあります。Slides.Addで新しいスライドを作り、タイトルと本文のプレースホルダーへ文字を入れます。
Option Explicit
Sub AddAgendaSlide()
Dim sld As Slide
Set sld = ActivePresentation.Slides.Add( _
ActivePresentation.Slides.Count + 1, ppLayoutText)
sld.Shapes.Title.TextFrame.TextRange.Text = "本日の流れ"
sld.Shapes.Placeholders(2).TextFrame.TextRange.Text = _
"1. 現状の確認" & vbCrLf & _
"2. 進め方の共有" & vbCrLf & _
"3. 次のアクション"
End Sub- 追加する位置を決める
- 使うレイアウトにプレースホルダーがあるか確認する
- 改行はvbCrLfで入れる
- 追加後にテーマと文字量を確認する
重複実行と見た目の崩れを防ぐ
PowerPoint VBAは、コードが動いたことと、資料が完成したことが同じではありません。番号やテキストボックスを追加するマクロは、実行回数によって図形が増えます。また、文字量が多いと、枠からはみ出したり、他の図形と重なったりします。
実務では、実行対象のファイル、対象スライド、追加した図形の名前、再実行したときの動きを決めておきます。コードを短く保ち、保存前にスライド一覧を目視する時間を残すと、意図しない変更を見つけやすくなります。
| 確認項目 | チェック例 |
|---|---|
| 対象 | 正しいプレゼンテーションとスライドか |
| 重複 | 同じ番号・案内が増えていないか |
| 文字 | 欠け・折り返し・フォント置換がないか |
| 保存 | 元ファイルを残し、別名で保存したか |
小さなマクロから資料作成の流れへ広げる
最初は1枚目のタイトルを変える、次に全スライドへ処理する、その後に追加や重複チェックを加える、という順番が安全です。処理が大きくなったら、スライド取得、文字更新、見た目確認のように役割ごとにSubを分けます。
自動化の目的は、すべてを機械に任せることではありません。資料の内容を考える時間を増やし、定型操作の抜け漏れを減らすことです。コードを共有する場合は、対象ファイルや実行手順、元に戻す方法も一緒に残します。
- 1枚の小さな処理で動作を確認する
- 全スライドへ広げる前にコピーを作る
- 再実行時の重複を設計する
- 保存前の目視確認を手順に残す
CHECK THE SOURCE
参考にした公式情報
PowerPoint VBAは、Slides・Shapes・TextFrameの階層を理解すると使いやすくなります。番号、タイトル、定型スライドのような繰り返しを任せ、最後の内容確認と見た目の判断は人が行う。この分担から始めましょう。