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」をクリックし実行したいマクロを選択し、「実行」をクリックします。
②処理がされたことが確認できれば完了です。
さいごに
いかがでしょうか。
今回は、
についてまとめました。
また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。
コメントを残す