社内報告書や定例会議の資料――
毎回同じようなスライドをPowerPointで手作業で作っていませんか?
実は、VBAを使えばExcelからPowerPointを自動操作してスライドを量産できます。
データ更新だけで資料を自動生成できるため、作業時間を大幅に短縮できます。
この記事では、VBAでPowerPointを操作してスライドを自動作成する方法を、実務に即したサンプル付きで解説します。
1. 準備:参照設定を追加する
VBAからPowerPointを操作するには、まず参照設定が必要です。
手順:
- Excelで「Alt + F11」を押してVBE(VBAエディタ)を開く
- メニューの「ツール」→「参照設定」をクリック
- 一覧から
Microsoft PowerPoint XX.X Object Library(バージョンは環境による)
にチェックを入れて「OK」
2. PowerPoint起動とスライドの追加
以下のコードでPowerPointを起動し、新しいプレゼンテーションを作成します。
Sub CreatePresentation()
Dim pptApp As PowerPoint.Application
Dim pptPres As PowerPoint.Presentation
Dim pptSlide As PowerPoint.Slide
' PowerPointを起動
Set pptApp = New PowerPoint.Application
pptApp.Visible = True
' 新規プレゼン作成
Set pptPres = pptApp.Presentations.Add
' スライド追加(レイアウト=タイトル+コンテンツ)
Set pptSlide = pptPres.Slides.Add(1, ppLayoutText)
' タイトルと本文を設定
pptSlide.Shapes(1).TextFrame.TextRange.Text = "自動生成タイトル"
pptSlide.Shapes(2).TextFrame.TextRange.Text = "これはVBAで作成されたスライドです。"
End Sub
3. スライドにタイトル・本文を挿入する
PowerPointスライドの中のテキストは .Shapes(n).TextFrame.TextRange.Text
で操作します。
pptSlide.Shapes(1).TextFrame.TextRange.Text = "スライドのタイトル"
pptSlide.Shapes(2).TextFrame.TextRange.Text = "本文内容をここに入力"
4. Excelのデータをスライドに反映させる方法
Excelの表やセルの内容をPowerPointに反映できます。
例:A1セルをスライドタイトルに、A2を本文に反映
Sub SlideFromExcel()
Dim pptApp As PowerPoint.Application
Dim pptPres As PowerPoint.Presentation
Dim pptSlide As PowerPoint.Slide
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
Set pptApp = New PowerPoint.Application
pptApp.Visible = True
Set pptPres = pptApp.Presentations.Add
Set pptSlide = pptPres.Slides.Add(1, ppLayoutText)
pptSlide.Shapes(1).TextFrame.TextRange.Text = ws.Range("A1").Value
pptSlide.Shapes(2).TextFrame.TextRange.Text = ws.Range("A2").Value
End Sub
5. 実務に役立つ応用例
■ 複数スライドをExcelの行ごとに作成
Sub GenerateSlidesFromRows()
Dim pptApp As PowerPoint.Application
Dim pptPres As PowerPoint.Presentation
Dim pptSlide As PowerPoint.Slide
Dim ws As Worksheet
Dim i As Long, lastRow As Long
Set ws = ThisWorkbook.Sheets("Sheet1")
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
Set pptApp = New PowerPoint.Application
pptApp.Visible = True
Set pptPres = pptApp.Presentations.Add
For i = 2 To lastRow
Set pptSlide = pptPres.Slides.Add(i - 1, ppLayoutText)
pptSlide.Shapes(1).TextFrame.TextRange.Text = ws.Cells(i, 1).Value ' タイトル
pptSlide.Shapes(2).TextFrame.TextRange.Text = ws.Cells(i, 2).Value ' 本文
Next i
End Sub
■ Excelのグラフをスライドに貼り付け
Sub PasteChartToSlide()
Dim pptApp As PowerPoint.Application
Dim pptPres As PowerPoint.Presentation
Dim pptSlide As PowerPoint.Slide
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
ws.ChartObjects(1).Chart.ChartArea.Copy
Set pptApp = New PowerPoint.Application
pptApp.Visible = True
Set pptPres = pptApp.Presentations.Add
Set pptSlide = pptPres.Slides.Add(1, ppLayoutText)
pptSlide.Shapes.Paste
End Sub
6. エラーとトラブルシューティング
症状 | 原因 | 対策 |
---|---|---|
「PowerPointが見つかりません」 | OfficeにPowerPointが含まれていない | PowerPoint付きOfficeをインストール |
「型が一致しません」 | 参照設定が未設定 | VBEで参照設定を見直す |
スライドに貼り付けできない | グラフが存在しないなど | 対象のグラフが正しく選択されているか確認 |
7. まとめ
VBAでPowerPointを操作すれば、報告資料や定型スライドの作成を一瞬で自動化できます。
- 単純なタイトル・本文挿入から
- グラフの貼り付けや複数スライドの生成まで
Excel×PowerPoint×VBAの組み合わせは、実務で非常に強力な武器になります。