【脱・手作業】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は、一度書いてしまえば、あなたがコーヒーを飲んでいる間も、深夜の残業中も、文句一つ言わずに働き続けてくれます。
最後に
プログラムにおいて最も大切なことは、「完璧を目指さないこと」です。まずは今回のように、「規定外のフォントを見つける」という小さな成功体験を積み重ねてください。それが、いずれ巨大な自動化システムを構築する力になります。
もしコードが動かなかったり、エラーが出たりしても落ち込まないでください。それは、「コンピュータと対話する準備が整った」という証拠です。いつでもまた、ここに相談しに来てくださいね。
皆さんの明日が、手作業のストレスから解放されることを願っています!
