【Excel VBA】PowerPointプレゼンテーションを自動作成する方法

Excelで分析したデータやグラフを使って、定期的にPowerPointで報告資料を作成する、といった作業は多くのビジネスシーンで発生します。VBAを使えば、こうしたPowerPointのプレゼンテーション作成も自動化することが可能です。

この記事では、Excel VBAからPowerPointを起動し、新しいプレゼンテーションにスライドとテキストボックスを追加して保存するまでの、最も基本的な流れを解説します。


目次

【重要】実行前の参照設定(推奨)

VBAでPowerPointを効率的に操作するためには、**「参照設定」**を行って「アーリーバインディング」という方法を使うのがお勧めです。

  1. VBE(Alt+F11)を開き、メニューの ツール > 参照設定 をクリックします。
  2. 一覧の中から**「Microsoft PowerPoint XX.0 Object Library」**を探し、チェックを入れて「OK」をクリックします。(XX.0の部分はPowerPointのバージョンによって異なります)

この設定により、PowerPointの専門用語(定数)がVBA内で使えるようになり、コードが格段に書きやすく、読みやすくなります。


完成したVBAコード

以下が、新しいPowerPointプレゼンテーションを作成し、タイトルスライドを追加するVBAコードです。

'参照設定: Microsoft PowerPoint XX.0 Object Library
Sub CreatePowerPointPresentation()

    ' 変数を宣言します
    Dim ppApp As PowerPoint.Application
    Dim ppPres As PowerPoint.Presentation
    Dim ppSld As PowerPoint.Slide
    Dim titleShape As PowerPoint.Shape

    ' --- 1. PowerPointアプリケーションを起動 ---
    Set ppApp = New PowerPoint.Application
    ppApp.Visible = True ' 画面を表示する

    ' --- 2. 新規プレゼンテーションを追加 ---
    Set ppPres = ppApp.Presentations.Add

    ' --- 3. スライドを追加 ---
    ' 1枚目のスライドを「白紙」のレイアウトで追加
    Set ppSld = ppPres.Slides.Add(1, ppLayoutBlank)
    
    ' --- 4. テキストボックスを追加して書式設定 ---
    ' AddTextbox(向き, 左からの位置, 上からの位置, 幅, 高さ)
    Set titleShape = ppSld.Shapes.AddTextbox(msoTextOrientationHorizontal, 50, 150, 860, 200)
    
    ' テキストボックス内の文字列を操作
    With titleShape.TextFrame.TextRange
        .Text = "Excel VBAによる自動生成タイトル"
        .Font.Name = "游ゴシック"
        .Font.Size = 60
        .Font.Bold = True
        .ParagraphFormat.Alignment = ppAlignCenter
    End With

    ' --- 5. 保存して終了 ---
    ppPres.SaveAs ThisWorkbook.Path & "\VBA_Generated_Presentation.pptx"
    ppApp.Quit

    ' --- 6. オブジェクトを解放 ---
    Set titleShape = Nothing
    Set ppSld = Nothing
    Set ppPres = Nothing
    Set ppApp = Nothing
    
    MsgBox "PowerPointプレゼンテーションの作成が完了しました。"

End Sub

コードのポイント解説

① PowerPointアプリケーションの起動

Set ppApp = New PowerPoint.Application
ppApp.Visible = True

New PowerPoint.Applicationで、PowerPointのアプリケーションオブジェクトを生成します。Wordの時と同様に、.Visible = Trueとすることで、処理の様子を画面で確認できます。

② プレゼンテーションとスライドの追加

Set ppPres = ppApp.Presentations.Add
Set ppSld = ppPres.Slides.Add(1, ppLayoutBlank)
  • .Presentations.Add: 新しい空のプレゼンテーション(.pptxファイルに相当)を作成します。
  • .Slides.Add(Index, Layout): プレゼンテーションに新しいスライドを追加します。
    • Index: 1は、スライドを1枚目に追加するという意味です。
    • Layout: ppLayoutBlankは、白紙のレイアウトを指定する定数です。ppLayoutTitle(タイトルのみ)など、様々なレイアウトを指定できます。

③ テキストボックスの追加 (.Shapes.AddTextbox)

Set titleShape = ppSld.Shapes.AddTextbox(msoTextOrientationHorizontal, 50, 150, 860, 200)

スライド上の図形(テキストボックス、画像、グラフなど)はすべてShapesコレクションで管理されます。.AddTextboxメソッドで、スライドにテキストボックスを追加します。引数は、向き、左からの位置、上からの位置、幅、高さを「ポイント」という単位で指定します。

④ テキストの入力と書式設定

With titleShape.TextFrame.TextRange
    .Text = "..."
    .Font.Size = 60
    .ParagraphFormat.Alignment = ppAlignCenter
End With

図形(Shape)の中のテキストを操作するには、.TextFrame.TextRangeオブジェクトにアクセスするのが基本です。

  • .Text: 表示する文字列そのものを設定します。
  • .Font: フォントに関するプロパティ(.Size.Name.Boldなど)を操作できます。
  • .ParagraphFormat: 段落に関するプロパティ(.Alignmentなど)を操作できます。ppAlignCenterは中央揃えを指定する定数です。

⑤ 保存と終了

ppPres.SaveAs "ファイルパス"
ppApp.Quit

.SaveAsでプレゼンテーションをファイルとして保存し、最後に必ず.QuitでPowerPointアプリケーションを終了させます。


まとめ

Excel VBAからPowerPointを操作する手順は、これまで見てきたWord操作と非常によく似ています。

  1. Applicationオブジェクトを生成する。
  2. Presentationオブジェクト(ファイル本体)を追加する。
  3. Slideオブジェクト(ページ)を追加する。
  4. Shapeオブジェクト(テキストボックスなど)を追加する。
  5. Shape内のTextRangeオブジェクトで、テキスト内容や書式を設定する。

このオブジェクトの階層構造を理解することが、PowerPoint自動化の鍵となります。この基本を応用すれば、Excelのデータを基にしたプレゼンテーションの完全自動生成も夢ではありません。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次