【Excel VBA】Excelの表をPowerPointに貼り付け、サイズと位置を調整する方法

Excelで作成した表をPowerPointのスライドに貼り付ける作業は、レポート作成などで頻繁に発生します。VBAを使えば、このコピー&ペーストのプロセスを自動化できるだけでなく、貼り付けた表のサイズやスライド上の位置を正確に指定することまで可能です。

この記事では、Excelのセル範囲をコピーし、PowerPointスライドの特定の位置に指定した大きさの表として貼り付ける、実践的なVBAコードを解説します。


目次

【重要】実行前の参照設定(推奨)

VBAでPowerPointの機能をスムーズに利用するため、事前に**「参照設定」**を行うことを強く推奨します。

  1. VBE(Alt+F11)を開き、メニューの ツール > 参照設定 をクリックします。
  2. 一覧の中から**「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メソッドの戻り値を受け取ることです。

  1. Excel側でデータを.Copyする。
  2. PowerPoint側で.Shapes.Pasteを実行し、その戻り値をShape型の変数に格納する。
  3. そのShape変数の.Left.Widthといったプロパティを書き換えて、レイアウトを調整する。

この手順により、単にデータを貼り付けるだけでなく、デザイン的に整ったスライドの生成までを完全に自動化することが可能になります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次