【入門編】【初心者】指定した特定のフォントスタイル(例:游ゴシック)が使われているか全スライドをチェックし、異なる場合に警告を出して保存するマクロ – PowerPoint VBA解析バイブル

スポンサーリンク

【脱・手作業】PowerPoint VBAで「フォント違反」を自動検知!保存前の安全策を構築しよう

こんにちは!業務自動化の世界へようこそ。
日々、何十枚ものスライドをチェックして、「あ、ここフォントが游ゴシックになってない…」と修正する作業に追われていませんか?

その作業、今日で終わりにしましょう。
今回は、「指定したフォント以外が使われていたら警告を出し、保存をブロックする」という、実務で即戦力となる自動化ツールを一緒に作っていきます。

VBAは「魔法の杖」ではなく「あなたの分身」です。仕組みさえ理解すれば、ミスはゼロになります。さあ、一緒に一歩踏み出しましょう。

—

1. なぜ「全スライドチェック」が必要なのか?

PowerPointで最も多い修正依頼は「フォントの統一」です。しかし、人間が目視で全スライドをチェックするのは、集中力の限界もあり、必ずミスが生まれます。

今回作成するマクロは、「保存する」というアクションをトリガー(合図)にして、自動的にチェックを実行するというアプローチをとります。これこそが、VBAによる業務自動化の醍醐味です。

—

2. 実践コード:フォントチェッカー

まずは、このコードをあなたのPowerPointの「標準モジュール」に貼り付けてください。

準備の手順

1. PowerPointを開き、`Alt + F11` を押してVBE(編集画面)を開く。
2. メニューの「挿入」→「標準モジュール」をクリック。
3. 下記のコードを貼り付ける。

Option Explicit

‘ ———————————————————
‘ 指定フォントチェックツール
‘ ターゲット:游ゴシック (Yu Gothic)
‘ ———————————————————
Sub CheckAndSavePresentation()
Dim sld As Slide
Dim shp As Shape
Dim targetFont As String
Dim isErrorFound As Boolean

targetFont = “游ゴシック”
isErrorFound = False

‘ 全スライドをループで巡回
For Each sld In ActivePresentation.Slides
For Each shp In sld.Shapes
‘ テキスト枠を持っているかチェック
If shp.HasTextFrame Then
If shp.TextFrame.HasText Then
‘ フォント名が一致するか判定
If shp.TextFrame.TextRange.Font.Name <> targetFont Then
MsgBox “警告!スライド ” & sld.SlideIndex & ” に規定外のフォントが含まれています。”, vbCritical
isErrorFound = True
Exit Sub ‘ エラーが見つかった時点で処理を中断
End If
End If
End If
Next shp
Next sld

‘ エラーがなければ保存
If Not isErrorFound Then
ActivePresentation.Save
MsgBox “チェック完了:フォントは正常です。保存しました。”, vbInformation
End If
End Sub

—

3. コードの「急所」を解説する

このコードがなぜ動くのか、初心者の方がつまづきやすいポイントを3つだけ解説します。

① `For Each` 文の役割

PowerPointの構成は「プレゼンテーションの中にスライドがあり、スライドの中に図形(Shape)がある」という階層構造になっています。`For Each` は、この箱の中身を一つずつ丁寧に取り出して確認するコマンドです。

② `HasTextFrame` という安全装置

全図形がテキストを持っているわけではありません(画像や図形も含まれます)。もしテキストを持たない図形に対して「フォントを教えろ!」と命令すると、プログラムはパニックを起こしてエラーで止まります。`If shp.HasTextFrame Then` で「テキストを持っているものだけ選別する」のが、エンジニアの基本の「型」です。

③ `Exit Sub` で守りを固める

エラーを見つけた瞬間に `Exit Sub` を呼ぶことで、それ以上のチェックを中止させます。余計な処理をさせない、これもパフォーマンスを維持する重要な知恵です。

—

4. さらに上を目指すあなたへ(プロの視点)

このコードが動かせるようになったら、次は以下のステップに挑戦してみてください。

  • 自動化の自動化: `OnTime` メソッドを使って、保存ボタンを押さなくても「10分おきに自動チェック」するように改造する。
  • ログ出力: エラーがあったスライド番号をExcelに出力し、「修正リスト」を自動生成する。

VBAは、一度書いてしまえば、あなたがコーヒーを飲んでいる間も、深夜の残業中も、文句一つ言わずに働き続けてくれます。

最後に

プログラムにおいて最も大切なことは、「完璧を目指さないこと」です。まずは今回のように、「規定外のフォントを見つける」という小さな成功体験を積み重ねてください。それが、いずれ巨大な自動化システムを構築する力になります。

もしコードが動かなかったり、エラーが出たりしても落ち込まないでください。それは、「コンピュータと対話する準備が整った」という証拠です。いつでもまた、ここに相談しに来てくださいね。

皆さんの明日が、手作業のストレスから解放されることを願っています!

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