【入門編】【初心者】開いている複数のプレゼンテーションから、特定のキーワードを含むスライドだけを抽出して新しいファイルとして保存する仕分けマクロ – PowerPoint VBA解析バイブル

スポンサーリンク

プレゼン地獄から脱出せよ!複数ファイルから「必要なスライド」だけを抽出するVBA自動化術

こんにちは。現場の最前線で「いかに手を動かさずに成果を出すか」を追求し続けているエンジニアです。

皆さんは、こんな経験はありませんか?
「過去の資料を5つも6つも開き、特定のキーワードが含まれるスライドだけを目視で探して、新しい資料にコピペする…」

もし、そんな時間を週に何度も費やしているなら、あなたは自分の「脳のCPU」をドブに捨てているようなものです。VBAを使えば、それはわずか数秒の作業になります。

今回は、マクロの記録ボタンを卒業し、「PowerPointの裏側」を操作して、賢く資料を抽出する極意を伝授します。

—

1. なぜ「手作業」から脱却すべきなのか?

PowerPoint VBAを操るということは、単に「コピペを自動化する」ことではありません。「オブジェクトモデル」という、PowerPointの設計図を直接操作するということです。

手作業で行うと、以下のようなリスクが必ず伴います。

  • ヒューマンエラー: 抽出漏れが発生する。
  • 非効率: ファイルを開閉するだけでメモリを浪費する。
  • 消耗: 単純作業で脳が疲弊し、本来のクリエイティブな仕事ができなくなる。

これから紹介するコードは、単なる自動化ツールではありません。あなたの時間を守るための「守護神」です。

—

2. 【実践】キーワード抽出・自動生成マクロ

このコードは、現在開いているすべてのプレゼンテーションを巡回し、指定したキーワードが含まれるスライドを、新しい「まとめファイル」にコピーして保存します。

Sub ExtractSlidesByKeyword()
‘ — 設定エリア —
Const KEYWORD As String = “重要” ‘ 検索したいキーワード
Dim targetPres As Presentation
Dim newPres As Presentation
Dim sld As Slide
Dim shp As Shape
Dim found As Boolean

‘ 新しいプレゼンを作成(クリーンな状態からスタート)
Set newPres = Presentations.Add

‘ 開いているすべてのプレゼンをループ処理
For Each targetPres In Presentations
‘ 自分自身(新しく作ったまとめファイル)は対象外にする
If targetPres.Name <> newPres.Name Then

‘ 各プレゼンのスライドをチェック
For Each sld In targetPres.Slides
found = False

‘ スライド内のテキストボックス等を探索
For Each shp In sld.Shapes
If shp.HasTextFrame Then
If InStr(shp.TextFrame.TextRange.Text, KEYWORD) > 0 Then
found = True
Exit For ‘ キーワードが見つかったら探索終了
End If
End If
Next shp

‘ キーワードが見つかった場合、新しいファイルにコピー
If found Then
sld.Copy
newPres.Slides.Paste
End If
Next sld
End If
Next targetPres

MsgBox “抽出完了!新しい資料を確認してください。”, vbInformation
End Sub

—

3. コードの「心臓部」を理解する

初心者の方がコードを読むとき、ただ眺めるのではなく、以下の「3つの視点」で見てください。

1. 階層構造(オブジェクトモデル):
`Presentations` (すべての開いているファイル) → `Presentation` (個別のファイル) → `Slides` (スライドの集まり) → `Slide` (個別のスライド) という「入れ子構造」を意識してください。VBAは、この階層を辿ることで目的の場所に辿り着きます。
2. `InStr` 関数の役割:
これは「文字列の中に特定の文字が含まれているか?」を判定する関数です。`> 0` というのは、「見つかった(文字の位置が0より大きい)」という合図です。
3. `If`文による安全装置:
`If targetPres.Name <> newPres.Name Then` という記述。これは、「自分が今作っているファイルまで検索対象にして無限ループに陥る」のを防ぐための重要なガードレールです。

—

4. 陥りやすいエラーと対策

初心者が最初に出会う壁は、大抵決まっています。

  • 「オブジェクトがありません」エラー:

これは、スライドが1枚もないファイルを開いている時や、図形の中にテキストが含まれていない(画像だけのスライド)場合に起こります。`shp.HasTextFrame` で「テキストボックスがあるか?」を確認してから中身を読むという防御的なコーディングが必須です。

  • 保存忘れ:

上のコードはメモリ上で新しいファイルを作ります。実行後、必ず `newPres.SaveAs` を使って保存する癖をつけてください。

—

最後に:エンジニアへの第一歩

「マクロなんて自分には無理」そう思っていたかもしれませんが、今日あなたは、PowerPointの内部構造に直接命令を下すコードを書きました。

このコードをベースに、「保存先フォルダを自動選択させる」「PDFで出力する」といった機能を付け足していけば、それはもう立派なあなたの「最強の武器」になります。

何か分からないことがあれば、またいつでも聞いてください。焦らず、一歩ずつ。その積み重ねが、あなたを「作業する人」から「仕組みを作る人」へと変えてくれますよ。応援しています!

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