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-2"
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"
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"
その挿入したスライドに1行3列の表を挿入して、
"PPT-2021-4-30 188-5"
その挿入した表にExcelのデータを流し込みます。
"PPT-2021-4-30 188-6"
関連語句
VBA, Visual Basic for Applications
対象: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-2"
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"
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"
その挿入したスライドに1行3列の表を挿入して、
"PPT-2021-4-30 188-5"
その挿入した表にExcelのデータを流し込みます。
"PPT-2021-4-30 188-6"
関連語句
VBA, Visual Basic for Applications
コメント 0