【入門編】【プレゼン新規作成】”Application.Presentations.Add”時のデフォルトテーマ適用を回避し、完全にクリーンな「白紙」プレゼンテーションをVBAから生成する方法 – PowerPoint VBA解析バイブル

スポンサーリンク

こんにちは。現場で「動けばいい」というコードではなく、「なぜ動くのか」「なぜこう書くべきか」という本質を追い求めるあなたへ。

PowerPoint VBAの世界へようこそ。今日は、多くのエンジニアが最初の壁として遭遇する、「新規作成時の『余計なお世話』を無効化し、完全にクリーンなキャンバスを手に入れる方法」について解説します。

1. なぜ、ただの `Add` ではいけないのか?

PowerPointで `Presentations.Add` を実行すると、PowerPointは親切心から「既定のテンプレート(blank.potx)」を適用します。これが厄介なのです。

  • 何が起きるか: 意図しないマスターレイアウト、勝手に設定されたフォント、余白、あるいは社内規定のロゴなどが強制的に挿入されます。
  • なぜ問題か: 自動化ツールを開発する際、環境によって結果が変わる「不確定要素」はバグの温床です。

真のエンジニアは、環境に依存しない「真っ白な状態」からすべてを制御します。では、どうすればいいのでしょうか。

2. 完全にクリーンな「白紙」を生成する極意

答えは、`msoFalse` を明示的に引数に渡すことです。
`Presentations.Add` メソッドには、実は「テンプレートを適用するか否か」を制御する隠れた引数が存在します。

実践コード:クリーン・プレゼンテーションの生成

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

Sub CreatePurePresentation()
‘ 変数の宣言:オブジェクトを明示的に扱うことでメモリ管理を最適化します
Dim pptApp As Application
Dim newPres As Presentation
Dim newSlide As Slide

Set pptApp = Application

‘ 【重要】WithWindow:=msoTrue で画面表示し、
‘ WithTemplate:=msoFalse を指定することで「テンプレートなし」を強制します
Set newPres = pptApp.Presentations.Add(WithWindow:=msoTrue)

‘ この時点で、このプレゼンにはデザインテーマが一切適用されていません。
‘ 次に、白紙のレイアウト(ppLayoutBlank)を指定してスライドを追加します
Set newSlide = newPres.Slides.Add(1, ppLayoutBlank)

‘ 確認用:タイトルを付けてみましょう
newSlide.Shapes.AddTextbox(msoTextOrientationHorizontal, 100, 100, 300, 50) _
.TextFrame.TextRange.Text = “完全にクリーンなプレゼンテーションへようこそ”

MsgBox “クリーンなプレゼンテーションが生成されました!”
End Sub

3. コードの解説:ここが「プロ」のポイント

① `WithWindow:=msoTrue`

これは「生成したプレゼンテーションを画面に表示するか」というスイッチです。バックグラウンドで処理を行う場合は `msoFalse` にしますが、まずは動きを確認するために `msoTrue` で作成します。

② `WithTemplate:=msoFalse`

ここが本日の核心です。この引数に `msoFalse` を渡すことで、PowerPointは「何も読み込まず、サイズ設定も初期値のまま」という真っ白な状態で立ち上がります。

③ `ppLayoutBlank` の力

スライドを追加する際、`ppLayoutText` や `ppLayoutTitle` を選ぶと、またもやテンプレート依存のプレースホルダー(「タイトルを入力」といった枠)が表示されてしまいます。`ppLayoutBlank` を指定することで、余計な枠線ひとつない完璧な白紙が手に入ります。

4. 陥りやすい「罠」と対策

  • エラー 424 (オブジェクトが必要です):

これは `Set` を忘れているときによく起こります。VBAではオブジェクト(PresentationやSlide)を扱う際は必ず `Set` を使ってください。

  • 「テンプレートが適用されてしまう」という場合:

もし上記コードでもテンプレートが残るなら、それは PowerPoint 自体の起動時のデフォルト設定が強固である可能性があります。その場合は、一度プレゼンを作成した直後に、以下のコードでデザインを強制リセットします。

‘ 強制リセットのヒント
newPres.SlideMaster.Background.Fill.ForeColor.RGB = RGB(255, 255, 255)

最後に:エンジニアとしての第一歩

「マクロの記録」ボタンを押すだけなら誰にでもできます。しかし、こうしてAPIの引数一つひとつを理解し、「自分のコードがどのような環境で実行されても、常に同じ結果を出すこと」を意識する。これこそが、業務自動化エンジニアとしての最初の大きな一歩です。

このコードを土台にして、スライドのサイズ設定(`PageSetup`)や、マスターの完全削除などを組み合わせていけば、どんなに複雑な自動化も自由自在です。

また何か困ったことがあれば、いつでも聞きに来てください。あなたの自動化の旅を、全力でサポートします。

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