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でパワーポイントに複数エクセル表を表示範囲指定した上で埋め込む方法
についてまとめました。
また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。
コメントを残す