【入門編】【中級者】プレゼンテーション内の全スライドからアニメーション効果をすべて一括削除し、シンプルで動作の軽い配布用ファイルとして再保存する軽量化マクロ – PowerPoint VBA解析バイブル

スポンサーリンク

【PowerPoint VBA】重いアニメーションを秒速で剥ぎ取る!プレゼン最適化の「極意」

こんにちは。自動化の世界へようこそ。
多くの人が「マクロの記録」から卒業しようとして、最初にぶつかる壁がPowerPointのDOM(ドキュメントオブジェクトモデル)です。

特に「動きの激しいプレゼン資料」を配布用に軽量化したいとき、手作業で何百枚ものスライドを操作するのは、まさに修行。そんな苦行は、我々エンジニアのコードで一瞬にして終わらせましょう。

今回は、「全スライドからアニメーションと画面切り替え効果を根こそぎ削除し、軽量な配布用ファイルを書き出す」という、実務で死ぬほど役に立つテクニックを伝授します。

—

なぜ「手作業」ではいけないのか?

PowerPointのファイルが重くなる原因の多くは、複雑に絡み合ったアニメーションのデータと、それを保持するためのメタデータです。手作業で削除しようとすると、隠れたアニメーションが残ったり、ファイルサイズが微妙に肥大化したままになったりします。

VBAで制御するということは、「PowerPointの心臓部(オブジェクト)に直接指示を出す」ということ。これを知れば、君の業務自動化のレベルは一気に一段階上がります。

—

究極の軽量化マクロ:CleanUpPresentation

以下のコードをVBAエディタ(Alt + F11)の標準モジュールに貼り付けてください。

Option Explicit

Sub CleanUpPresentation()
Dim pptApp As Application
Dim pptPres As Presentation
Dim sld As Slide
Dim eff As Effect
Dim newPath As String

Set pptApp = Application
Set pptPres = pptApp.ActivePresentation

‘ 1. アニメーションと画面切り替えを削除
For Each sld In pptPres.Slides
‘ 【アニメーション削除】
‘ TimeLineはアニメーションの管理場所です
Do While sld.TimeLine.MainSequence.Count > 0
sld.TimeLine.MainSequence(1).Delete
Loop

‘ 【画面切り替え削除】
‘ SlideShowTransitionで切り替え効果を制御します
With sld.SlideShowTransition
.EntryEffect = ppEffectNone
.AdvanceOnClick = msoTrue ‘ クリックで進む設定に統一
End With
Next sld

‘ 2. 別名で保存(ファイルサイズ最適化の儀式)
‘ デスクトップに「_Light」を付与して保存
newPath = Environ(“USERPROFILE”) & “\Desktop\” & _
Replace(pptPres.Name, “.pptx”, “”) & “_Light.pptx”

pptPres.SaveCopyAs newPath

MsgBox “軽量化完了!” & vbCrLf & “保存先: ” & newPath, vbInformation
End Sub

—

コードの「ここが本質」を解説

このコードには、初心者が陥りやすい「罠」を回避するための工夫が詰まっています。

1. なぜ「`Do While`」で削除するのか?

`For Each` で削除しようとすると、リストのインデックスがずれてしまい、エラーや「削除漏れ」が発生します。インデックスが常に「1」を指すように `Do While` で削除し続けるのが、VBAでコレクションを操作する際の鉄則です。

2. `SlideShowTransition` とは何か?

画面切り替え効果は、スライド単位のオブジェクトである `SlideShowTransition` が握っています。ここを `ppEffectNone` に設定することで、視覚的な重りをすべて取り除きます。

3. `SaveCopyAs` を選ぶ理由

元のファイルを直接いじると、保存に失敗したときにデータが破損するリスクがあります。`SaveCopyAs` は、メモリ上のデータを安全に別名保存するための「保険」です。実務では「オリジナルは守り、成果物だけを作る」のが鉄則です。

—

陥りやすいエラーとその対策

  • 「実行時エラー 424」: オブジェクトが必要です
  • プレゼンテーションが開かれていない可能性があります。必ずファイルを開いた状態で実行してください。
  • ファイルがまだ重い…
  • このマクロは「アニメーション」を削除しますが、画像自体の解像度が原因の場合もあります。その場合は、一度「名前を付けて保存」で、手動で画像の圧縮を試すか、`CommandBars.ExecuteMso “PictureCompress”` を組み合わせてみてください。

—

次のステップへ

ここをクリアした君は、すでにPowerPoint VBAの「骨格」を理解できています。
次は「特定のフォントを一括で統一する」や「不要な非表示スライドを削除する」といった機能を追加してみるのがおすすめです。

VBAは、難解な技術ではありません。「やりたいこと(削除・保存)」を「オブジェクト(スライド・アニメーション)」に伝えるだけの対話です。

さあ、退屈な作業はコードに任せて、君はもっと創造的なことに時間を使ってください。また現場で会いましょう!

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