VBAでパワーポイントにエクセルグラフを貼り付ける方法!位置調整も!

VBAでパワーポイントにエクセルグラフを貼り付ける方法!位置調整も!

VBAでパワーポイントにエクセルグラフを貼り付ける方法を知りたいときはないでしょうか。

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

・VBAでパワーポイントにエクセルグラフを貼り付ける方法がわからない
・VBAでパワーポイントにエクセルグラフを貼り付けさらに位置調整をする方法がわからない

ですよね。

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

・VBAでパワーポイントにエクセルグラフを位置調整した上貼り付ける方法

についてまとめます!

VBAでパワーポイントにエクセルグラフを貼り付けるイメージ

VBAでパワーポイントにエクセルグラフを貼り付けるイメージについて説明をします。

グラフがあるブック名とパス、シート名をメモします。

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

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

マクロを実行すると、

各グラフが指定されたパワーポイントのページへ貼り付けられます!

貼り付けたいグラフが大量にあるとき便利ですね!

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

VBAでパワーポイントにエクセルグラフを貼り付けるための下準備

VBAでパワーポイントにエクセルグラフを貼り付けるための下準備をしていきましょう。

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

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

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

Excelグラフファイルを準備する

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

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

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

グラフの転記先とパワーポイントのパスを記載する台帳を用意します。

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

 

A列 B列 C列
グラフがあるExcelファイルのパス シート名 スライド番号
F1
グラフ貼り付け先パワポファイルのパス

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

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

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

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

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

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

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

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

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

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

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

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

VBAでパワーポイントにエクセルグラフを貼り付ける方法

サンプルコード

VBAでパワーポイントにエクセルグラフを貼り付けるサンプルコードは以下の通りです。

Sub パワーポイントへExcelのグラフを挿入する()
    
    Dim objPPTApp As PowerPoint.Application
    Dim objPPTPres As PowerPoint.Presentation
    Dim objPPTSlide As PowerPoint.Slide
    Dim objPPTLayout As Object
    Dim objXLApp As Excel.Application
    Dim objXLWb As Workbook
    Dim objXLWs As Worksheet
    Dim objTbl As Object
    Dim intlastRow As Integer
    Dim i As Integer
    Dim intLeft As Integer
    Dim intTop As Integer
    
    ' グラフ挿入の左部の位置を設定します。単位はピクセルとなります。
    intLeft = 100
    ' グラフ挿入の上部の位置を設定します。
    intTop = 200

    ' PowerPointアプリケーションをセットします。
    Set objPPTApp = CreateObject("PowerPoint.Application")

    ' Excelアプリケーションを開きます。
    Set objXLApp = CreateObject("Excel.Application")
    
    ' Excelアプリケーションを表示させます。
    objXLApp.Visible = True
    
    
    ' Excelの最初のシートを参照する
    With ThisWorkbook.Sheets(1)
        
        ' PowerPointのファイルパスを取得します。
        Set objPPTPres = objPPTApp.Presentations.Open(.Cells(1, 6).Value)
    
        '列の最終行を取得します。
        intlastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
    
        ' Excelシートの各行に対して処理を行います。
        For i = 2 To intlastRow
            
            '台帳からグラフがあるExcelファイルのパス情報を取得します。
            Set objXLWb = objXLApp.Workbooks.Open(.Cells(i, 1).Value)
        
            ' Excelシート情報を取得します。
            Set objXLWs = objXLWb.Worksheets(.Cells(i, 2).Value)
        
            'グラフオブジェクトをコピーします。
            objXLWs.ChartObjects(1).Copy
            
            ' パワーポイントのスライドにグラフを貼り付けます。
            Set objPPTSlide = objPPTPres.Slides(.Cells(i, 3).Value)
            objPPTSlide.Shapes.PasteSpecial DataType:=ppPasteShape, Link:=msoFalse

            '表示スライドに張り付けたグラフオブジェクトを再取得します。
            Set objTbl = objPPTSlide.Shapes(objPPTSlide.Shapes.Count)
            With objTbl
                '上部/左部の位置を設定します。
                .Left = intLeft
                .Top = intTop
            End With
            
            ' グラフのExcelファイルを閉じます。
            objXLWb.Close SaveChanges:=False
            
        Next i
    End With

    objXLApp.Quit
    Set objPPTApp = Nothing
    Set objPPTPres = Nothing
    Set objXLApp = Nothing
    Set objXLWb = Nothing
    Set objXLWs = Nothing
    Set objPPTSlide = Nothing
    Set objTbl = Nothing
    
    MsgBox "パワーポイントへグラフを貼り付けました!" & Chr(10) & "OKであれば保存してください。"
    
End Sub

VBAを設定する

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

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

intLeft = 100

グラフ挿入の上部の位置を設定します。

intTop = 200

VBAの実装

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

実行する

VBAを実行しましょう。

「パワーポイントへグラフを貼り付けました!OKであれば保存してください。」が表示されたら完了です。

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

はい!パワーポイントへグラフが貼り付けられましたね!

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

VBAでパワーポイントにエクセルグラフを貼り付けるVBAの説明

VBAでパワーポイントにエクセルグラフを貼り付けるVBAについて説明をします。

Excel台帳の1スライド目を参照します。

With ThisWorkbook.Sheets(1)

PowerPointのファイルパスを取得します。

Set objPPTPres = objPPTApp.Presentations.Open(.Cells(1, 6).Value)

列の最終行を取得します。

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

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

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

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

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

グラフオブジェクトをコピーします。

objXLWs.ChartObjects(1).Copy

パワーポイントのスライドにグラフを貼り付けます。

Set objPPTSlide = objPPTPres.Slides(.Cells(i, 3).Value)
objPPTSlide.Shapes.PasteSpecial DataType:=ppPasteShape, Link:=msoFalse

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

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

パワーポイントのスライドにグラフを貼り付けます。貼り付け形式は編集可能な図形タイプとなります。

Set objPPTSlide = objPPTPres.Slides(.Cells(i, 3).Value)
objPPTSlide.Shapes.PasteSpecial DataType:=ppPasteShape, 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でパワーポイントにエクセルグラフを位置調整した上貼り付ける方法

についてまとめました。

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



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

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









コメントを残す

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