VBAでパワーポイントに複数エクセル表を埋め込む方法!表示範囲指定も!

VBAでパワーポイントに複数エクセル表を埋め込む方法!表示範囲指定も!

VBAでパワーポイントに複数エクセル表を埋め込む方法を知りたいときはないでしょうか。

けど、そんな中で悩むことは、

・VBAでパワーポイントに複数エクセル表を埋め込む方法がわからない
・VBAでパワーポイントに複数エクセル表を表示範囲指定した上で埋め込む方法がわからない

ですよね。

今回はそんなお悩みを解決する

・VBAでパワーポイントに複数エクセル表を埋め込む方法
・VBAでパワーポイントに複数エクセル表を表示範囲指定した上で埋め込む方法

についてまとめます!

VBAでパワーポイントに複数エクセル表を埋め込むイメージ

VBAでパワーポイントに複数エクセル表を埋め込むイメージについて説明をします。

表があるブック名とパス、シート名と範囲をメモします。

転記したいパワーポイントのファイル名とパスをメモします。

台帳となるExcelシートを用意しメモした情報を転記し、表挿入するスライド番号を指定します。

マクロを実行すると、

各Excel表が指定されたパワーポイントのページへ埋め込まれます!

埋め込みたい表が大量にあるとき便利ですね!

それでは早速実装してためしてみましょう!

VBAでパワーポイントに複数エクセル表を埋め込むための下準備

VBAでパワーポイントに複数エクセル表を埋め込むための下準備をしていきましょう。

パワーポイントファイルを準備する

パワーポイントファイルを準備しましょう。

サンプルでは3スライド使いますので、表紙含め4スライドのファイルを用意しました。

Excel表ファイルを準備する

表があるExcelファイルを準備しましょう。

サンプルでは3ブック用意しています。

Excel台帳ファイルを準備する

まずは表と表転記先となるパワーポイントを指定する台帳をExcelシートで用意します。

各セルの構成は以下の通りです。

A列 B列 C列 D列
表があるExcelファイルのパス シート名 表示範囲 スライド番号
G1
表貼り付け先パワポファイルのパス

2列目以降にそれぞれの内容を入れていきます。

「表があるExcelファイルのパス」はパスを入れ、続いてシート名、埋め込みたい表の表示範囲、次に埋め込み先となるパワーポイントのページ番号を指定します。

サンプルは以下の通りです。

表があるExcelファイルのパス シート名 表示範囲 スライド番号
F:\test\表1.xlsx Sheet1 A1:B4 2
F:\test\表2.xlsx Sheet2 A1:B3 3
F:\test\表3.xlsx Sheet3 A1:B5 4

G1には表貼り付け先パワポファイルのパスを入力します。

表貼り付け先パワポファイルのパス⇒ F:\test\プレゼンテーション1.pptx

Excelからパワーポイントを操作できるよう設定する

ExcelからパワーポイントをVBAで操作できるよう設定をしていきましょう。

①Excelを起動し、「開発」タブをクリックします。

②VBEの画面が開いたら、メニューから「ツール」>「参照設定」を選択します。

③「Microsoft PowerPoint XX.X Object Library」を探してチェックボックスにチェックし「OK」をクリックします。

タカヒロ
タカヒロ
この設定がないと、マクロ実行後にエラーとなりますのでかならず設定するようお願いします。

VBAでパワーポイントに複数エクセル表を埋め込む方法

サンプルコード

VBAでパワーポイントに複数エクセル表を埋め込むサンプルコードは以下の通りです。

Sub パワーポイントに複数エクセル表を埋め込む()
    Dim objPPTApp As Object
    Dim objPPTPres As Object
    Dim objPPTSlide As Object
    Dim objXLApp As Object
    Dim objXLWb As Workbook
    Dim objXLWbDaichoWs As Object
    Dim objXLWs As Worksheet
    Dim objTbl As Object
    Dim intlastRow As Integer
    Dim intLeft As Integer
    Dim intTop As Integer
    Dim i As Integer
    
    '表挿入の左部の位置を設定します。
    intLeft = 100
    '表挿入の上部の位置を設定します。
    intTop = 200
    
    'Excel台帳の1スライド目を取得します。
    Set objXLWbDaichoWs = ThisWorkbook.Worksheets(1)
    
    ' ファイルパスを格納する列の範囲を取得します。
    intlastRow = objXLWbDaichoWs.Cells(objXLWbDaichoWs.Rows.Count, 1).End(xlUp).Row
    
    ' PowerPointアプリケーションを開きます。
    Set objPPTApp = CreateObject("PowerPoint.Application")
    
    ' 台帳のG1セルを元にPowerPointファイルを開きます。
    Set objPPTPres = objPPTApp.Presentations.Open(objXLWbDaichoWs.Range("G1").Value)
    
    ' PowerPointアプリケーションを表示します。
    objPPTApp.Visible = True
    
    ' Excelアプリケーションを開きます。
    Set objXLApp = CreateObject("Excel.Application")
    
    ' Excelアプリケーションを表示させます。
    objXLApp.Visible = True
    
    ' Excelファイルを開きます。
    For i = 2 To intlastRow
        
        '台帳から表があるExcelファイルのパス情報を取得します。
        Set objXLWb = objXLApp.Workbooks.Open(objXLWbDaichoWs.Cells(i, 1).Value)
        
        ' Excelシート情報を取得します。
        Set objXLWs = objXLWb.Worksheets(objXLWbDaichoWs.Cells(i, 2).Value)
        
        ' 表をコピーします。
        objXLWs.Range(objXLWbDaichoWs.Cells(i, 3).Value).Copy
        
        ' パワーポイントのスライドに表を貼り付けます。
        Set objPPTSlide = objPPTPres.Slides(objXLWbDaichoWs.Cells(i, 4).Value)
        
        objPPTSlide.Shapes.PasteSpecial DataType:=ppPasteOLEObject, Link:=msoFalse

        '表示スライドに張り付けた表オブジェクトを再取得します。
        Set objTbl = objPPTSlide.Shapes(objPPTSlide.Shapes.Count)
        With objTbl
            '上部/左部の位置を設定します。
            .Left = intLeft
            .Top = intTop
        End With
        
        ' オブジェクトを解放します。
        Set objXLWs = Nothing
        Set objXLWb = Nothing

    Next i
    
    ' オブジェクトを解放します。
    Set objXLApp = Nothing
    Set objPPTApp = Nothing
    Set objPPTSlide = Nothing
    Set objPPTPres = Nothing
    Set objXLWbDaichoWs = Nothing
    
    MsgBox "パワーポイントへ表を埋め込みました!" & Chr(10) & "OKであれば保存してください。"
    
End Sub

VBAを設定する

VBAを設定していきましょう。

表挿入の左部の位置を設定します。単位はピクセルとなります。

intLeft = 100

表挿入の上部の位置を設定します。

intTop = 200

VBAの実装

VBAの実装方法については
VBAの実装手順
をご参照ください。

実行する

VBAを実行しましょう。

「パワーポイントへ表を埋め込みました!OKであれば保存してください。」が表示されたら完了です。

パワーポイントをみてみましょう。

はい!パワーポイントへ表が埋め込まれましたね!

タカヒロ
タカヒロ
マクロ実行直後はパワーポイントは保存されていませんので、表の埋め込みが問題なければ保存するようにしてください。

VBAでパワーポイントに表範囲を絞り込み埋め込む

台帳側の表の表示範囲を変更する

次に表の表示範囲を変更してみましょう。以下のようにExcel台帳の表示範囲設定値を変更します。

表があるExcelファイルのパス シート名 表示範囲
F:\test\表1.xlsx Sheet1 A1:B2
F:\test\表2.xlsx Sheet2 A1:B2
F:\test\表3.xlsx Sheet3 A1:B2

実行する

VBAを実行しましょう。

はい!表の表示範囲が絞られましたね!

VBAでパワーポイントに複数エクセル表を埋め込むVBAの説明

VBAでパワーポイントに複数エクセル表を埋め込むVBAについて説明をします。

表挿入の左部の位置を設定します。

intLeft = 100

表挿入の上部の位置を設定します。

intTop = 200

Excel台帳の1スライド目を取得します。

Set objXLWbDaichoWs = ThisWorkbook.Worksheets(1)

ファイルパスを格納する列の範囲を取得します。

intlastRow = objXLWbDaichoWs.Cells(objXLWbDaichoWs.Rows.Count, 1).End(xlUp).Row

PowerPointアプリケーションを開きます。

Set objPPTApp = CreateObject("PowerPoint.Application")

台帳のG1セルを元にPowerPointファイルを開きます。

Set objPPTPres = objPPTApp.Presentations.Open(objXLWbDaichoWs.Range("G1").Value)

PowerPointアプリケーションを表示します。

objPPTApp.Visible = True

Excelアプリケーションを開きます。

Set objXLApp = CreateObject("Excel.Application")

Excelアプリケーションを表示させます。

objXLApp.Visible = True

台帳から表があるExcelファイルのパス情報を取得します。

Set objXLWb = objXLApp.Workbooks.Open(objXLWbDaichoWs.Cells(i, 1).Value)

Excelシート情報を取得します。

Set objXLWs = objXLWb.Worksheets(objXLWbDaichoWs.Cells(i, 2).Value)

表をコピーします。

objXLWs.Range(objXLWbDaichoWs.Cells(i, 3).Value).Copy

パワーポイントのスライドに表を貼り付けます。貼り付け形式は埋め込みタイプとなります。

Set objPPTSlide = objPPTPres.Slides(objXLWbDaichoWs.Cells(i, 4).Value);objPPTSlide.Shapes.PasteSpecial DataType:=ppPasteOLEObject, Link:=msoFalse

PowerPoint VBAのPasteSpecial の引数として利用できる定数は以下の通りです。

定数 説明
ppPasteBitmap 画像を貼り付けます。ビットマップ形式で貼り付けます。
ppPasteDefault 貼り付けるオブジェクトの形式が、送り元によって自動的に決定されます。多くの場合は、画像がビットマップ形式で貼り付けられます。
ppPasteEnhancedMetafile 拡張メタファイル形式で、グラフィックス、テキスト、および描画オブジェクトを貼り付けます。Windows上で広く使用されている、高品質のグラフィックスをサポートしています。
ppPasteGIF グラフィックスとアニメーションを含むGIF形式で貼り付けます。
ppPasteHTML HTML形式で貼り付けます。貼り付けるドキュメントには、多くの場合、フォント、テキスト装飾、およびその他のWebページ要素が含まれます。
ppPasteJPG JPEG形式で貼り付けます。高品質の画像をサポートしています。
ppPasteMetafilePicture メタファイル形式で貼り付けます。グラフィックス、テキスト、および描画オブジェクトをサポートしています。
ppPasteOLEObject OLEオブジェクトを貼り付けます。OLEオブジェクトには、多くの場合、データベース、スプレッドシート、グラフ、およびその他のアプリケーションが含まれます。
ppPastePNG PNG形式で貼り付けます。高品質の画像をサポートしています。
ppPasteRTF Rich Text Format (RTF)形式で貼り付けます。テキスト、フォント、およびテキスト装飾をサポートしています。
ppPasteShape 編集可能な図形として貼り付けます。
ppPasteText プレーンテキスト形式で貼り付けます。テキスト装飾は含まれません。

またLinkの引数については以下の通りです。

定数 説明
msoFalse? 既定値。 クリップボードの内容のソース ファイルへのリンクを作成しません。
msotrue クリップボード内容のソース ファイルへのリンクを作成します。

参考:https://learn.microsoft.com/ja-jp/office/vba/api/powerpoint.view.pastespecial

表示スライドに張り付けた表オブジェクトを再取得します。

Set objTbl = objPPTSlide.Shapes(objPPTSlide.Shapes.Count)

上部/左部の位置を設定します。

.Left = intLeft;.Top = intTop

VBAの実装手順

実装手順は以下の通りです。

Excel側にVBAを実装していきます。

①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。

②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。

③右ペインのウインドウに上記のVBAを入力します。

こちらで完了です。

VBAを実行する

では早速VBAの実行をしてみましょう。

①「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。

②処理がされたことが確認できれば完了です。

さいごに

いかがでしょうか。

今回は、

・VBAでパワーポイントに複数エクセル表を埋め込む方法
・VBAでパワーポイントに複数エクセル表を表示範囲指定した上で埋め込む方法

についてまとめました。

また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。








コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です