Excel VBAからPowerPointスライドを生成する方法をお探しですね。

広告

ExcelのデータからPowerPointのスライドを一瞬で大量作成する方法

Excelで管理している大量のデータを、PowerPointのスライドに一つひとつ手作業でコピペしていませんか?商品カタログや月次報告書、名刺データなど、同じフォーマットのスライドを何十枚も作る作業って、本当に時間がかかるし、コピペミスも起きやすいですよね。

この記事では、Excel VBAを使ってPowerPointを自動で操作し、リストになっているデータから大量のスライドを一瞬で作る方法を、わかりやすく解説していきます。

Excel VBAでPowerPointを自動操作するとこんなに便利!

ExcelとPowerPointは、どちらも同じMicrosoft Officeのソフトなので、VBA(Visual Basic for Applications)という機能を使えば、簡単に連携させることができます。

普通なら、Excelのデータを見ながらPowerPointに一つずつ入力していく必要がありますが、Excel側からPowerPointを「遠隔操作」することで、この面倒な作業を完全に自動化できるんです。

毎日同じような作業の繰り返しに疲れている人には、本当におすすめの方法です。

この自動化の最大のメリットは、作業時間が劇的に短くなることと、人為的なミスがなくなることです。

例えば、100人分の顧客データから100枚の提案書スライドを作る場合、手作業だと数時間かかる上に、コピペミスや文字の配置ズレが起きる可能性が常にあります。

でも、VBAで自動化の仕組みを一度作ってしまえば、ボタンを1回クリックするだけで、数秒から数十秒で完璧なスライドが完成します。

しかも、一度コードを作っておけば、担当者が変わっても同じクオリティで資料を作れるので、「あの人しかできない」という状況も防げます。

Excel VBAからPowerPointを操作する基本的な流れは、まずExcel側でPowerPointのアプリを仮想的に起動します。

そして、その中に特定のファイルを開いて、スライドや図形に対してプログラムから直接指示を出していくという感じです。

ExcelのWorkbookやWorksheetという概念が、PowerPointではPresentationやSlideに当たると考えれば、すでにExcel VBAの基礎を知っている人なら、すんなり理解できるはずです。

【準備編】ExcelからPowerPointを動かすための設定

Excel VBAのコードからPowerPoint特有のオブジェクト(PresentationやSlideなど)をちゃんと認識させて、スムーズにコードを書くためには、最初に「参照設定」という準備をしておくのがおすすめです。

参照設定をしなくても動かすことはできるんですが、設定しておくと、コードを入力している最中に候補が自動で表示される機能(インテリセンス)が使えるようになるので、開発がすごく楽になりますし、スペルミスも防げます。

この参照設定の手順はとっても簡単で、初心者の方でも迷わずできます。

まず、Excelを開いて「Alt + F11」キーを押して、マクロを書くための画面(Visual Basic Editor)を開きます。

次に、上のメニューから「ツール」→「参照設定」をクリックします。

出てきたリストの中から「Microsoft PowerPoint XX.X Object Library」(XX.XはOfficeのバージョンによって変わります)を探してチェックを入れて、OKを押すだけで完了です。

この設定をしておくと、Excel VBA側で「Dim pptApp As PowerPoint.Application」みたいなPowerPoint専用の書き方ができるようになります。

ただし、作ったマクロを他の人のパソコン(違うOfficeバージョン)で使う可能性がある場合は、ちょっと注意が必要です。

開発中は参照設定ありで作って、完成後に設定を外して「Object型」で書き直すというテクニックを使うと、バージョンの違いによるエラーを防げます。

【実践編】大量のスライドを自動で作るVBAコードの例

準備ができたら、実際にExcelのリストデータからPowerPointのスライドを自動で作るVBAコードを書いていきましょう。

ここでは、PowerPoint側にあらかじめデザインを整えた「テンプレート用のスライド(1枚目)」を用意しておきます。

そして、ExcelのA列に書かれた氏名、B列に書かれた部署名のリストを読み込んで、スライドをコピーしながらテキストボックスの文字を自動で次々と入れ替えていくという、実務でよく使われる方法を解説します。

以下のサンプルコードは、Excel VBAの標準モジュールに書いて実行することを想定しています。

コードの流れは、まずPowerPointアプリを裏側で起動して、指定したテンプレートファイルを開きます。

その後、Excelの2行目から最終行までデータを順番に読み込んで、PowerPointの1枚目のスライドをどんどんコピーしていきます。

コピーしたスライドの中にある特定の図形(テキストボックス)を見つけて、Excelのセルから取ってきた文字を入れていくという手順です。

“`vba

Sub CreatePowerPointSlides()
    Dim pptApp As PowerPoint.Application
    Dim pptPrs As PowerPoint.Presentation
    Dim pptSld As PowerPoint.Slide
    Dim ws As Worksheet
    Dim lastRow As Long, i As Long
    Dim templatePath As String

    ' Excelのシートとデータの最終行を取得
    Set ws = ThisWorkbook.Sheets("Sheet1")
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

    ' PowerPointテンプレートファイルの場所を指定
    templatePath = ThisWorkbook.Path & "\template.pptx"

    ' PowerPointアプリを起動
    Set pptApp = New PowerPoint.Application
    pptApp.Visible = msoTrue
    Set pptPrs = pptApp.Presentations.Open(templatePath)

    ' Excelのデータを1行ずつ読み込んでスライドを作成
    For i = 2 To lastRow
        ' 1枚目のテンプレートスライドを末尾にコピー
        Set pptSld = pptPrs.Slides(1).Duplicate
        pptSld.MoveTo pptPrs.Slides.Count

        ' コピーしたスライドのテキストを差し替え(図形の名前で判定)
        pptSld.Shapes("NameBox").TextFrame.TextRange.Text = ws.Cells(i, 1).Value
        pptSld.Shapes("DeptBox").TextFrame.TextRange.Text = ws.Cells(i, 2).Value
    Next i

    ' テンプレートの元スライド(1枚目)を削除
    pptPrs.Slides(1).Delete

    MsgBox "スライドの自動生成が完了しました!"
End Sub

“`

このコードを正しく動かすためには、PowerPointのテンプレート側で少し準備が必要です。

具体的には、文字を入れ替えたいテキストボックスに「NameBox」「DeptBox」といった名前(オブジェクト名)をあらかじめ付けておく必要があります。

図形の名前は、PowerPointの「ホーム」タブにある「選択」メニューから「オブジェクトの選択と表示」パネルを開くと簡単に確認・変更できるので、コードの中の名前と完全に一致させるように注意してください。

エラーを防いで実務で使うための注意点とカスタマイズのコツ

Excel VBAからPowerPointを操作する自動化ツールはとても便利ですが、実務で長く安定して使うためには、いくつか押さえておきたいポイントがあります。

現場でよく起きるエラーの原因は、指定した場所にPowerPointのテンプレートファイルがない、または誰かがファイルを開きっぱなしになっていて使えない、といった「ファイル関連のトラブル」です。

これを防ぐには、VBAのDir関数を使って事前にファイルが存在するか確認する処理を追加すると、より安定したプログラムになります。

また、処理するデータが数百件、数千件と膨大になる場合は、マクロの実行中に画面がチカチカする現象(画面の更新が頻繁に行われること)が起きることがあります。

これで処理速度がすごく遅くなってしまうので、PowerPointのウィンドウを非表示(pptApp.Visible = msoFalse)にして裏側で処理を進めて、すべてのスライドができあがってから最後に表示させる、という方法をとると、体感的な処理速度がぐっと速くなります。

さらに、応用的なカスタマイズとして、単なるテキストの差し替えだけでなく、Excelのセルに書かれた画像のファイルパスを読み込んで、スライドの指定した位置に画像を自動で入れる処理を組み込むこともできます。

商品カタログや顔写真入りの社員名簿などを定期的に作る業務では、画像の自動挿入機能を追加すると、自動化ツールの価値がさらに高まります。

まずはシンプルなテキストの差し替えから始めて、徐々に画像挿入やフォントの自動調整などの機能を追加して、自分の会社の業務にぴったり合ったシステムに育ててみてください。

広告