PowerPointで差し込み印刷
Wordには差し込み印刷という機能がありますが、PowerPointにはありません。
VBA(マクロ)を使ってExcelのデータをPowerPointに差し込んで保存する方法を考えました。
一応、動きましたので、自分のメモとして残しておきます。
PowerPoint2013、Excel2013で確認しました。
PowerPointで元となるファイルを作成
PowerPointでひな形となるファイルを作成します。
情報を差し込みたい箇所にテキストボックスをセットします。適当なテキストを入力しておきます。パワポは空のテキストボックスは自動的に削除されてしまうようです。
ここでは次のようなファイルを作ることにします。
1枚目のスライドに「テキスト ボックス 3」という名前のテキストボックスをセット。
2枚目のスライドに「テキスト ボックス 5」という名前のテキストボックスをセット。
なおテキストボックスの名前は、そのテキストボックスを選択した状態で、メニューの 書式 - 配置 - オブジェクトの選択と表示 を選択すると、右側に表示されます。
適当な名前で保存しておいてください。ここでは「パワポ差込.pptx」とします。
Excelで差し込みデータを準備
Excelで差し込むためのデータを準備します。
ここでは次のようなデータを準備することにします。
1枚目のスライドのテキストボックスに「場所」、2枚目のスライドのテキストボックスに「チーム」を差し込むことにします。
シート名は「Sheet1」とします。
なおExcelマクロ有効ブック(xlsm)で保存しておいてください。ここでは「パワポ差込.xlsm」とします。
VBA
次のようなコードを「パワポ差込.xlsm」の標準モジュールに書きます。
※Alt+F12でVBエディタを開き左側のプロジェクトエクスプローラで該当するVBAProjectを右クリックし挿入、標準モジュールを選択し右側に書く。
Const my_folder = "C:\\data\"
arrs = Worksheets("Sheet1").Range("A2:C5").Value
Set my_application = CreateObject("PowerPoint.Application")
Set my_presentation = my_application.ActivePresentation
For i = 1 To UBound(arrs, 1)
my_presentation.Slides(1).Shapes("テキスト ボックス 3").TextFrame.TextRange.Text = arrs(i, 2)
my_presentation.Slides(2).Shapes("テキスト ボックス 5").TextFrame.TextRange.Text = arrs(i, 3)
my_presentation.SaveAs my_folder & "file" & arrs(i, 1)
Next
End Sub
my_folderは差し込んだ後のPowerPointのファイルが保存されるフォルダです。
「Sheet1」シートの「A2:C5」の範囲のデータを配列に取り込みます。
my_applicationはアプリケーション(PowerPoint)、my_presentationは現在、開いているPowerPointになります。
ForNextで、指定した範囲の各行について処理します。
1枚目のスライド(Slides(1))のテキストボックス(Shapes("テキスト ボックス 3"))に「場所」(arrs(i, 2))をセットします。
2枚目のスライド(Slides(2))のテキストボックス(Shapes("テキスト ボックス 5"))に「チーム」(arrs(i, 3))をセットします。
ファイル名を「file」+「整理番号」として保存します。
これを繰り返します。
処理が完了するとmy_folderで指定したフォルダにPowerPointのファイルが保存されます。
使い方
「パワポ差込.pptx」を開きます。PowerPointはこれだけを開き、他のファイルは閉じます。
「パワポ差込.xlsm」を開き、マクロ「パワポ差込保存」を実行します。
「パワポ差込.pptx」にテキストがセットされ別名で保存されます。これが繰り返されます。
[ 2016年8月10日 | カテゴリー: マイクロソフト | タグ: PowerPoint , VBA , 差し込み印刷 ]
« 森田屋 浅草雷門店 | 博多だるまJAPAN »
コメントを残す