PowerPoint VBAの極意:スライド自動選別で「プレゼンの作り分け」を瞬殺する技術
こんにちは。自動化の現場で数々の泥臭い作業をコードで解決してきたエンジニアです。
皆さんは、プレゼン資料の「社内用・社外用」の作り分けで消耗していませんか? 1枚ずつ「非表示」に設定して、誤って非表示にし忘れたまま投影してしまう……そんなミスは今日で卒業しましょう。
今回は、PowerPoint VBAを操り、「特定のキーワードが含まれるスライドを自動で非表示にする」という、実務で明日から使える強力なテクニックを伝授します。これさえ理解すれば、あなたはもう「手作業の奴隷」ではありません。
—
1. なぜ「オブジェクトモデル」を理解すべきなのか
PowerPoint VBAを制する鍵は、オブジェクトの階層構造を理解することにあります。
- Application: PowerPointそのもの。
- Presentation: 開いているファイル全体。
- Slide: プレゼンの構成要素である1枚の紙。
これらは「入れ子」になっています。スライドを制御したいなら、`Presentation`の中に並んでいる`Slides`コレクションを順番に覗き込み、その中の`Slide`オブジェクトに対して命令を下す……この「構造把握」がVBAの第一歩です。
—
2. 現場で使える「魔法のコード」
以下のコードをVBAエディタ(Alt + F11)に貼り付けてみてください。このスクリプトは、スライド内のテキストボックスやタイトルをスキャンし、特定のキーワード(例:「【社内限定】」)が含まれていれば、そのスライドを瞬時に非表示にします。
Sub HideSlidesByKeyword()
‘ 変数宣言(型を明示することでメモリ効率を最大化します)
Dim sld As Slide
Dim shp As Shape
Dim targetKeyword As String
‘ ここに非表示にしたいキーワードを設定
targetKeyword = “【社内限定】”
‘ 現在のプレゼンテーション内の全スライドを走査
For Each sld In ActivePresentation.Slides
‘ スライド内の全シェイプ(図形・テキストボックス)をチェック
For Each shp In sld.Shapes
‘ テキストが含まれているか確認
If shp.HasTextFrame Then
If InStr(shp.TextFrame.TextRange.Text, targetKeyword) > 0 Then
‘ 条件合致:スライドを非表示にする
sld.SlideShowTransition.Hidden = msoTrue
‘ 一箇所見つかればそのスライドは処理済みなのでループを抜ける
Exit For
End If
End If
Next shp
Next sld
MsgBox “非表示設定が完了しました。確認してください!”, vbInformation
End Sub
コードの重要ポイント解説
- `For Each … In …`: これがVBAにおける最強のループ文です。全スライドを漏れなく、かつ高速に舐めることができます。
- `InStr`関数: 文字列の中に「キーワード」が含まれているかを判定します。0より大きければ「含まれている」という証明になります。
- `sld.SlideShowTransition.Hidden`: これが今回の心臓部。`msoTrue`を代入することで、スライドショー実行時にそのスライドがスキップされるようになります。
—
3. 陥りやすい罠とエンジニアの心得
このスクリプトを使う上で、初学者がよく躓くポイントが2つあります。
① 「テキストがない図形」への参照エラー
`shp.HasTextFrame`のチェックを忘れると、画像や線などの「文字を持たない図形」を触ろうとしてエラーになります。「そのオブジェクトが本当にその機能を持っているか?」を確認する慎重さが、バグを出さないエンジニアの証です。
② Undo(元に戻す)ができない
VBAによる操作は、残念ながら「Ctrl + Z」で取り消せません。実行する前に必ずファイルをバックアップ(別名保存)してください。 これはプロの現場における鉄則です。
—
4. さあ、次のステップへ
このコードをベースに、さらに改良を加えることも可能です。
- 逆に「非表示をすべて解除する」コードを別に作っておく。
- キーワードを外部のExcelシートから読み込めるようにする。
一度自動化の味を占めると、手作業がどれほど非効率だったか痛感するはずです。PowerPoint VBAは、あなたの貴重な時間を奪う「繰り返し作業」を根絶するための強力な武器です。
このコードが、あなたの業務を少しでも楽に、そしてスマートなものにしてくれることを願っています。もし分からないことがあれば、いつでもまた聞きに来てくださいね。
皆さんのエンジニアリングライフが、より創造的なものになりますように!
