Excelで作成した表をPowerPointのスライドに貼り付ける作業は、レポート作成などで頻繁に発生します。VBAを使えば、このコピー&ペーストのプロセスを自動化できるだけでなく、貼り付けた表のサイズやスライド上の位置を正確に指定することまで可能です。
この記事では、Excelのセル範囲をコピーし、PowerPointスライドの特定の位置に指定した大きさの表として貼り付ける、実践的なVBAコードを解説します。
【重要】実行前の参照設定(推奨)
VBAでPowerPointの機能をスムーズに利用するため、事前に**「参照設定」**を行うことを強く推奨します。
- VBE(
Alt
+F11
)を開き、メニューのツール
>参照設定
をクリックします。 - 一覧の中から**「Microsoft PowerPoint XX.0 Object Library」**を探し、チェックを入れて「OK」をクリックします。
これにより、PowerPoint専用の命令や定数が利用可能になり、コードが格段に扱いやすくなります。
完成したVBAコード
以下が、Excelの表をコピーしてPowerPointスライドに貼り付け、その位置とサイズを調整するVBAコードです。
'参照設定: Microsoft PowerPoint XX.0 Object Library
Sub PasteTableToPowerPoint()
' 変数を宣言します
Dim ppApp As PowerPoint.Application
Dim ppPres As PowerPoint.Presentation
Dim targetSlide As PowerPoint.Slide
Dim pastedTableShape As PowerPoint.Shape
Dim sourceRange As Range
' --- 1. PowerPointを起動し、スライドを準備 ---
Set ppApp = New PowerPoint.Application
ppApp.Visible = True ' 画面を表示する
Set ppPres = ppApp.Presentations.Add
' 白紙のスライドを1枚追加
Set targetSlide = ppPres.Slides.Add(1, ppLayoutBlank)
' --- 2. Excelの表範囲をコピー ---
Set sourceRange = ThisWorkbook.Worksheets("Sheet1").Range("B2:E8")
sourceRange.Copy
' --- 3. PowerPointスライドに貼り付け、オブジェクトを取得 ---
' Pasteメソッドは、貼り付けたShapeオブジェクトを返す
Set pastedTableShape = targetSlide.Shapes.Paste
' --- 4. 貼り付けた表の位置とサイズを調整 ---
With pastedTableShape
.Left = 130 ' 左からの位置
.Top = 100 ' 上からの位置
.Width = 700 ' 幅
.Height = 250 ' 高さ
End With
' --- 5. 保存して終了 ---
ppPres.SaveAs ThisWorkbook.Path & "\PastedTablePresentation.pptx"
ppApp.Quit
' --- 6. オブジェクトを解放 ---
Set pastedTableShape = Nothing
Set targetSlide = Nothing
Set ppPres = Nothing
Set ppApp = Nothing
MsgBox "PowerPointへの表の貼り付けが完了しました。"
End Sub
コードのポイント解説
① Excel範囲のコピー
Set sourceRange = ThisWorkbook.Worksheets("Sheet1").Range("B2:E8")
sourceRange.Copy
まず、PowerPointに貼り付けたいExcel上のセル範囲をオブジェクト変数に格納し、.Copy
メソッドでクリップボードにコピーします。
② PowerPointスライドへの貼り付け (.Shapes.Paste)
Set pastedTableShape = targetSlide.Shapes.Paste
これが今回のコードの核心部分です。 targetSlide.Shapes.Paste
は、クリップボードにある内容をスライド上に貼り付けます。そして最も重要なのは、このメソッドが貼り付けによって作成された新しい図形(Shape)オブジェクトを戻り値として返すことです。
この戻り値をpastedTableShape
という変数にSet
することで、今しがた貼り付けたばかりの表オブジェクトを、VBAで直接操作できるようになります。
③ 貼り付けた表(Shape)の位置とサイズを調整
With pastedTableShape
.Left = 130
.Top = 100
.Width = 700
.Height = 250
End With
取得したpastedTableShape
オブジェクトのプロパティを操作して、表の表示を調整します。
.Left
: スライドの左端からの位置.Top
: スライドの上端からの位置.Width
: 表の幅.Height
: 表の高さ
これらの値の単位は、すべて「ポイント」(1インチ = 72ポイント)です。これらの値を調整することで、スライド上の任意の位置に、任意のサイズで表を配置できます。
④ 保存して終了
ppPres.SaveAs ...
ppApp.Quit
最後に、作成したプレゼンテーションを.SaveAs
で保存し、.Quit
でPowerPointアプリケーションを終了させます。これにより、メモリリークを防ぎ、処理を安全に完了させることができます。
まとめ
Excelの表をPowerPointに貼り付けてレイアウトを調整する際のポイントは、.Shapes.Paste
メソッドの戻り値を受け取ることです。
- Excel側でデータを
.Copy
する。 - PowerPoint側で
.Shapes.Paste
を実行し、その戻り値をShape
型の変数に格納する。 - その
Shape
変数の.Left
や.Width
といったプロパティを書き換えて、レイアウトを調整する。
この手順により、単にデータを貼り付けるだけでなく、デザイン的に整ったスライドの生成までを完全に自動化することが可能になります。