SSブログ

PPT Excelのデータごとにスライドを作成するPowerPointマクロ [PPT]

PPT Excelのデータごとにスライドを作成するPowerPointマクロ

対象:PowerPoint2007, PowerPoint2010, PowerPoint2013

Excelのデータ1件ごとにPowerPointのスライドを作成する、Excelマクロをご紹介しました。

同じことを、PowerPointマクロで行うことも可能です。

Excelのデータごとにスライドを作成するサンプルマクロ

仕様は、前回ご紹介した、Excelマクロと同じです。

フィールドは3列で、1行目からデータが入っていて、データ1件ごと・1レコードごとに、PowerPointのスライド1枚ごとに、1行3列の表の形にします。

"PPT-2021-4-30 188-1"
PPT-2021-4-30 188-1.jpg
"PPT-2021-4-30 188-2"
PPT-2021-4-30 188-2.jpg
Excelが開かれていて、元データの含まれるワークシートが一番上にある状態で、上記のPowerPointマクロを実行すると、確認メッセージが表示されたあとに[はい]ボタンをクリックすると、PowerPointの末尾にスライドが追加されていきます。

サンプルマクロの解説

PowerPoint側から、Excelデータを引っ張ってきてスライドを作る場合、データの入力されているExcelファイルをどう指定するのかが、一つのポイントです。

ファイルを指定するダイアログをマクロの中で表示する方法、定数にExcelファイルのフルパスを指定する方法などが考えられますが、今回は、開いているExcelファイルの一番上になっている・アクティブシートを元データにするという方法にしました。

Excelファイルが開いていないときなどにエラーとなっていますので、エラー発生時には、ERR_HNDLまで飛ぶようにしています。

 On Error GoTo ERR_HNDL

開いているExcelファイルのアクティブシートを変数に格納して、

 Set xl_app = GetObject(Class:="Excel.Application")

 Set xl_sh = xl_app.ActiveWorkbook.ActiveSheet

アクティブなワークシートのA列の最終行番号を変数に格納します。

 r_end = xl_sh.Range("A1").End(-4121).Row '-4121 = xlDown

Range("A1").End(xlDown).Rowというのは、Excel VBAで、A列の最終行番号を取得する定番のオブジェクト式ですが、今回は参照設定をしていない、定数・xlDownを使えないことを想定して、リテラル「-4121」をEndプロパティの引数に指定しています。

"PPT-2021-4-30 188-3"
PPT-2021-4-30 188-3.jpg
Excelのデータごとにスライドを作成するPowerPointマクロ

アクティブなシート名とデータ件数と共に確認メッセージを表示し[いいえ]ボタンが押されたときには、END_TASKまで飛んで終了します。

 msg = "『" & xl_sh.Name & "』シートから、" & r_end & "枚のスライドを作成しますか?"

 If MsgBox(msg, vbYesNo) = vbNo Then GoTo END_TASK

[はい]ボタンがクリックされたときに、スライド作成の処理を開始します。

アクティブなプレゼンテーションファイルの、スライドの枚数を取得し、

 With ActivePresentation.Slides

  i = .Count

Excelのデータ分だけループを回します。

  For r = 1 To r_end

スライドの枚数をインクリメントして、

   i = i + 1

最後尾にppLayoutTableタイプのスライドを挿入します。前回ご紹介した参照設定なしのExcelマクロの場合は、定数・ppLayoutTableが使えませんでしたが、今回はPowerPointマクロですからPowerPoint VBAの定数を使って指定ができます。

  "PPT-2021-4-30 188-4"
PPT-2021-4-30 188-4.jpg
その挿入したスライドに1行3列の表を挿入して、

  "PPT-2021-4-30 188-5"
PPT-2021-4-30 188-5.jpg
その挿入した表にExcelのデータを流し込みます。

   "PPT-2021-4-30 188-6"
PPT-2021-4-30 188-6.jpg
関連語句

VBA, Visual Basic for Applications
nice!(0)  コメント(0) 
共通テーマ:日記・雑感

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。