【入門編】スライドの「非表示(ShowInSlideShow)」属性を一括制御:特定のキーワードを含むスライドのみを自動で非表示にするスクリプト – PowerPoint VBA解析バイブル

スポンサーリンク

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は、あなたの貴重な時間を奪う「繰り返し作業」を根絶するための強力な武器です。

このコードが、あなたの業務を少しでも楽に、そしてスマートなものにしてくれることを願っています。もし分からないことがあれば、いつでもまた聞きに来てくださいね。

皆さんのエンジニアリングライフが、より創造的なものになりますように!

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