【実務対応】VBAでPowerPointを操作して自動スライド作成する方法

社内報告書や定例会議の資料――
毎回同じようなスライドをPowerPointで手作業で作っていませんか?

実は、VBAを使えばExcelからPowerPointを自動操作してスライドを量産できます。
データ更新だけで資料を自動生成できるため、作業時間を大幅に短縮できます。

この記事では、VBAでPowerPointを操作してスライドを自動作成する方法を、実務に即したサンプル付きで解説します。


1. 準備:参照設定を追加する

VBAからPowerPointを操作するには、まず参照設定が必要です。

手順:

  1. Excelで「Alt + F11」を押してVBE(VBAエディタ)を開く
  2. メニューの「ツール」→「参照設定」をクリック
  3. 一覧から
      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の組み合わせは、実務で非常に強力な武器になります。

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