Excelで分析したデータやグラフを使って、定期的にPowerPointで報告資料を作成する、といった作業は多くのビジネスシーンで発生します。VBAを使えば、こうしたPowerPointのプレゼンテーション作成も自動化することが可能です。
この記事では、Excel VBAからPowerPointを起動し、新しいプレゼンテーションにスライドとテキストボックスを追加して保存するまでの、最も基本的な流れを解説します。
【重要】実行前の参照設定(推奨)
VBAでPowerPointを効率的に操作するためには、**「参照設定」**を行って「アーリーバインディング」という方法を使うのがお勧めです。
- VBE(
Alt
+F11
)を開き、メニューのツール
>参照設定
をクリックします。 - 一覧の中から**「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
(タイトルのみ)など、様々なレイアウトを指定できます。
- Index:
③ テキストボックスの追加 (.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操作と非常によく似ています。
- Applicationオブジェクトを生成する。
- Presentationオブジェクト(ファイル本体)を追加する。
- Slideオブジェクト(ページ)を追加する。
- Shapeオブジェクト(テキストボックスなど)を追加する。
- Shape内のTextRangeオブジェクトで、テキスト内容や書式を設定する。
このオブジェクトの階層構造を理解することが、PowerPoint自動化の鍵となります。この基本を応用すれば、Excelのデータを基にしたプレゼンテーションの完全自動生成も夢ではありません。