【入門編】【上級者】PowerPointのイベントリスナー(App_PresentationOpen等)を利用し、ファイルが開かれた瞬間に社内規定のフォントやスタイルに自動適合させるアドイン開発 – PowerPoint VBA解析バイブル

スポンサーリンク

こんにちは。PowerPointという「表現の道具」を、あなたの意のままに操るエンジニアの世界へようこそ。

「マクロの記録」ボタンを押して、生成されたコードを眺める段階はもう卒業です。今日は、PowerPointという巨大なアプリケーションの「心臓部」に直接触れ、ファイルを開いた瞬間に全てを規程通りに整形する「常駐型エンジン」の作り方を伝授します。

これは単なる自動化ではありません。あなたの組織のドキュメント品質を、一瞬で統一する「守護神」の設計です。

—

1. なぜ「イベントリスナー」が必要なのか?

通常、VBAは「ボタンを押したとき」に動きます。しかし、プロフェッショナルな自動化では「ユーザーが意識する前に、システムが裏で動く」ことが求められます。

PowerPointには、アプリケーション全体の動きを監視する「Applicationイベント」が用意されています。これを使えば、「プレゼンテーションが開かれた瞬間(`PresentationOpen`)」に、フォントやスタイルを検知して修正を走らせることが可能になります。

2. 準備:クラスモジュールによる「監視者」の作成

標準モジュールだけでは、アプリケーション全体のイベントは捕まえられません。まずは「クラスモジュール」を使い、イベントを仲介する「監視者」を作成します。

手順

1. PowerPointで `Alt + F11` を押し、VBE(エディタ)を開く。
2. 左側のツリーで右クリックし、`挿入` > `クラスモジュール` を選択。
3. 名前を `EventClass` に変更する。

クラスモジュール `EventClass` のコード

‘ PowerPointのアプリケーションイベントを監視するための宣言
Public WithEvents App As Application

‘ ファイルが開かれた瞬間に発火するイベント
Private Sub App_PresentationOpen(ByVal Pres As Presentation)
‘ ここに自動修正のロジックを呼び出す
Call ApplyCorporateStyle(Pres)
End Sub

3. 「司令塔」の設置:標準モジュールの役割

クラスモジュールは「監視役」ですが、それを起動する「司令塔」が必要です。標準モジュールに、PowerPoint起動時にこの監視役を有効化するコードを書きます。

標準モジュール `Module1` のコード

Dim MyEvent As New EventClass

‘ PowerPoint起動時に自動的に監視を開始する
Public Sub Auto_Open()
Set MyEvent.App = Application
End Sub

※アドイン(.ppam)として保存すれば、PowerPoint起動時に自動でこの `Auto_Open` が走り、監視が始まります。

4. 本丸:スタイル自動適合ロジック

ここが一番の腕の見せ所です。全スライドの全シェイプを走査し、規定のフォント(例: “Meiryo UI”)に強制変換します。

Sub ApplyCorporateStyle(Pres As Presentation)
Dim sld As Slide
Dim shp As Shape

On Error Resume Next ‘ エラー回避(テキストを持たない図形等への対策)

For Each sld In Pres.Slides
For Each shp In sld.Shapes
‘ テキストフレームがある場合のみ処理
If shp.HasTextFrame Then
With shp.TextFrame.TextRange.Font
.Name = “メイリオ” ‘ 社内規定フォント
.Size = 12 ‘ 基本サイズ
End With
End If
Next
Next

MsgBox “社内規定スタイルを適用しました。”
End Sub

—

5. 初学者が陥りやすい「罠」と対策

このレベルに挑戦する皆さんに、現場でよくある失敗を共有しておきます。

  • 「イベントが反応しない」問題:
  • `MyEvent` をモジュールレベルの変数(`Dim` をモジュールの先頭に記述)にしてください。プロシージャ内で宣言すると、終了と同時に監視が途切れます。
  • 「処理が重すぎる」問題:
  • プレゼンテーションが巨大な場合、全スライドを走査するとフリーズします。修正が必要なスライドだけを特定するロジックを入れるか、`Application.ScreenUpdating = False` で描画を一時停止する工夫が必要です。
  • 「ループが回らない」問題:
  • グループ化された図形は `Shapes` の中にある `GroupItems` を再帰的に探す必要があります。今回は触れませんでしたが、プロフェッショナルを目指すなら「再帰処理」の習得が必須です。

—

まとめ:あなたはもう「ただのユーザー」ではない

このシステムを `.ppam` (PowerPointアドイン)として保存し、「スタートアップ」フォルダに入れておけば、あなたのPCで開くすべてのプレゼンテーションは、開いた瞬間に「あなたの理想のスタイル」に生まれ変わります。

ここをクリアしたあなたは、すでにVBAを「コードを書くツール」ではなく、「Office環境を支配するOS」として捉え始めています。

次はぜひ、スライドマスターの検証や、社内ロゴの自動配置など、自分だけの「自動化アーキテクチャ」を拡張していってください。何か詰まったら、いつでも戻ってきてくださいね。応援しています。

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