【入門編】【初心者】プレゼンテーション内の全スライドに固有のIDや管理番号を自動付与し、追跡可能な状態で別名保存するマクロ – PowerPoint VBA解析バイブル

スポンサーリンク

PowerPoint VBAで「スライド管理」を自動化する!全スライドに固有IDを刻み込む極意

こんにちは。現場の最前線で自動化アーキテクトをしているエンジニアです。

皆さんは、数百枚に及ぶプレゼン資料を修正する際、「どのスライドが最新版で、どこから修正が必要か」を見失ったことはありませんか?
「スライド1」「スライド1_修正版」「最終_修正版_2」……そんな名前でフォルダが埋め尽くされているなら、今すぐその沼から脱却しましょう。

今回は、「各スライドに固有の管理番号(ID)を自動付与し、追跡可能にする」という、プロの現場でも活用される自動化テクニックを伝授します。マクロの記録という「砂遊び」から卒業し、オブジェクトを操る「エンジニアの視点」を身につけましょう。

—

1. なぜ「スライドID」が必要なのか?

大規模なプロジェクトでは、スライド単体が独立した「資産」として扱われます。

  • 進捗管理: 「スライドNo.005の内容、修正しておいて」と指示が出せる。
  • バージョン追跡: 後から見た時に、どのプロセスで作られたものか特定できる。

手動で一つずつテキストボックスを配置するのは、時間の無駄です。VBAなら、一瞬です。

—

2. 準備:VBAの世界へ飛び込もう

まず、PowerPointで`Alt + F11`を押してください。それが、あなたの開発環境(VBE)です。
1. メニューの「挿入」→「標準モジュール」をクリック。
2. 以下のコードをコピペしてください。

—

3. 実装コード:スライドにIDを刻印するエンジン

このコードは、各スライドの「ノート」領域、あるいは「フッター」領域に固有のIDを書き込むものです。今回は最も安全な「ノート」の先頭にIDを追記する方式を採用します。

Sub StampSlideIDs()
‘ 変数の宣言(型を明示するのがプロの第一歩です)
Dim pptPres As Presentation
Dim pptSlide As Slide
Dim strID As String
Dim counter As Integer

‘ 現在開いているプレゼンテーションを指定
Set pptPres = ActivePresentation
counter = 1

‘ 全スライドをループ処理する(オブジェクト指向の基本)
For Each pptSlide In pptPres.Slides
‘ IDの生成(”PPT-2023-001″のような形式)
strID = “ID: ” & Format(Now, “yyyymmdd”) & “-” & Format(counter, “000”)

‘ スライドのノート領域の先頭にIDを挿入
‘ .NotesPage はスライドのノート表示に対応するオブジェクト
With pptSlide.NotesPage.Shapes.Placeholders(2).TextFrame.TextRange
.InsertAfter strID & vbCrLf
End With

counter = counter + 1
Next pptSlide

‘ 完了を通知
MsgBox counter – 1 & “枚のスライドにIDを付与しました。”, vbInformation
End Sub

—

4. コードの深掘り:ここを理解すれば怖いものなし

初心者が陥りやすい「エラーの罠」を回避するための解説です。

① `For Each` 文の威力

`For i = 1 to Slides.Count` と書くよりも、`For Each` を使いましょう。これは「スライドが何枚あろうと、存在する分だけ全部処理してね」という、より人間的でミスが少ない書き方です。

② なぜ「ノート」に書くのか?

スライドの表面(デザインエリア)にテキストを書くと、デザインが崩れたり、誤って削除されたりします。「管理情報は裏(ノート)に置く」。これが、保守性を高める現場の知恵です。

③ 陥りやすいエラー:Placeholdersの罠

`Placeholders(2)` は、一般的なレイアウトのスライドにおける「ノート本文」を指します。もしエラーが出る場合は、スライドのレイアウトが特殊な可能性があります。まずは標準的なレイアウトで試してみてください。

—

5. 次のステップ:保存の自動化

IDを刻んだ後、自動で別名保存するには、コードの最後に以下を追加してください。

‘ 別名保存(元のファイルは残すのがリスク管理の鉄則)
Dim newPath As String
newPath = pptPres.Path & “\Stamped_” & pptPres.Name
pptPres.SaveCopyAs newPath

—

最後に:自動化は「道具」ではなく「思考」

マクロを組むことは、単なる「作業の短縮」ではありません。「どうすれば人間がミスを犯さずに、正確にデータを管理できるか」という仕組みづくりそのものです。

まずは今日、このコードを動かしてみてください。画面上のスライドが、あなたの制御下に入る感覚を味わえるはずです。
もしエラーが出ても怖がることはありません。エラーメッセージこそが、PowerPointがあなたに送る「ヒント」なのですから。

さあ、次はどんな業務を「自動化」で支配しましょうか?応援しています。

タイトルとURLをコピーしました