簡単!エクセルVBAでシート上のグラフをコピーしてPowerPointにペーストする

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

エクセルVBAでPowerPointを操作する方法についてお伝えしています。

前回の記事はこちらです。

429 Too Many Requests

PowerPointとは少し離れまして、エクセル上のグラフのデータ範囲をVBAを使って変更する方法についてお伝えしました。

データ範囲を変更してグラフを次々と変化させながら、そのグラフをPowerPointに貼り付けていくことができれば、大量のグラフが必要な資料もアッという間にできるのではないか!?ということですね。

実際できますけどね。

今回は再度PowerPointに戻りまして、VBAによりエクセル上のグラフをPowerPointに貼り付ける方法についてお伝えします。

では、行ってみましょう。

スポンサーリンク

今回のお題の確認とPowerPointファイルを開くおさらい

今回も引き続き、こちらのPowerPointファイル「ひな形.pptx」を使います。

エクセルVBAでPowerPointプレゼンテーションを開いた

単純にこのPowerPointファイルを開くプログラムはこちらです。

Sub PowerPointファイルを開く()

Dim ppApp As New PowerPoint.Application
ppApp.Visible = True

Dim ppPrs As PowerPoint.Presentation
Set ppPrs = ppApp.Presentations.Open(ThisWorkbook.Path & "\ひな形.pptx")

'ppApp.Quit
'Set ppApp = Nothing

End Sub

詳細は以下の記事をご覧ください。

エクセルVBAでPowerPointのプレゼンテーションを開く方法・スライドを取得する方法
エクセルVBAでPowerPointを操作する方法をシリーズでお伝えしています。今回は特定のPowerPointプレゼンテーションファイルを開くプログラムおよびスライドを取得するプログラムです。

このプログラムの7行目と9行目の間に、エクセルシート上のグラフを貼り付ける処理を入れていけばOKということになります。

エクセルのグラフをPowerPointに貼り付ける

エクセルのグラフを選択して Ctrl + C 、そして貼り付け先のPowerPointのスライドを開いて Ctrl + V でペースト。

そんな作業もVBAで実現することができます。

VBAで実施する場合も、コピーとペーストをそれぞれ別のステートメントで行いますよ。

CopyPictureでグラフをコピーする

エクセルシート上のグラフをコピーする場合はChartオブジェクトに対するCopyPictureメソッドを使ってこのように書きます。

Chartオブジェクト.CopyPicture コピー形式, ピクチャ形式

これで、該当のChartオブジェクト(つまりグラフ)が画像としてクリップボードにコピーされます。

パラメータですが、コピー形式は以下2種類です。

名前 説明
xlScreen

画面の表示にできる限り近い形でコピー
xlPrinter

画面の印刷するときと同じ形でコピー

省略可能で既定値はxlScreenです。ほとんどの場合は、xlScreenで問題ないです。

もう一つのパラメータ、ピクチャ形式は以下2種類です。

名前 説明
xlPicture

ドロー画像
xlBitmap

ビットマップ

省略可能で既定値はxlPictureです。ビットマップは容量が重いので、特に理由がない限りはxlPictureを選べばよいと思います。

Pasteメソッドで画像をペーストする

次にペーストですね。

PowerPointのスライドにコピーした画像をペーストする場合は、Shapesコレクションに対するPasteメソッドを使います。

Shapesコレクション.Paste

ひじょーにシンプルですね。これで、クリップボード内の画像がペーストされ、新たなShapeとして追加されます。

グラフをコピー&ペーストするプログラムとその実行結果

プログラムにしますと、こちらです。

Sub PowerPointにグラフを貼り付ける()

Dim ppApp As New PowerPoint.Application
ppApp.Visible = True

Dim ppPrs As PowerPoint.Presentation
Set ppPrs = ppApp.Presentations.Open(ThisWorkbook.Path & "\ひな形.pptx")

Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet2")

ws.ChartObjects("Chart 1").chart.CopyPicture xlScreen, xlPicture 'グラフを画像としてコピー
ppPrs.Slides(1).Shapes.Paste 'グラフ画像をペースト

'ppApp.Quit
'Set ppApp = Nothing

End Sub

目的とするグラフに関するChartObject名は「Chat 1」とします。以下の記事の方法で取得できます。

初心者でも分かる!エクセルVBAでグラフを操作し取り扱うための超基本の第一歩
今回はエクセルVBAでのグラフの取り扱いについてその超基本についてお伝えします。埋め込みグラフとグラフシートについて、またChartObjectとChartの違いなどについて解説をしています。

こちらを実行しますと…

エクセルVBAでグラフをPowerPointに貼り付けた

無事に貼り付けできました。

ですがちょっと小さいですね…元のグラフのサイズを大きくしてあげましょう。

A4横ならば、20cm×12cmくらいでちょうどよいですかね。

エクセルでグラフを選択した状態で、リボンのグラフツール「書式」にてサイズを変更します。

エクセルでグラフのサイズをPowerPointのA4横に合わせる

これで再度実行してみます。

エクセルVBAでグラフをPowerPointに貼り付けた

ほどよい感じですね。

まとめ

エクセルのシート上のグラフをPowerPointに貼り付ける方法についてお伝えしました。

簡単ですね。

次回はいよいよグラフのデータ範囲を変更しながら、次々とスライドにグラフを貼り付けていく繰り返し処理にしていきたいと思います。

エクセルVBAでグラフのデータ範囲を変更しながらPowerPointに連続して貼り付ける
エクセルVBAでPowerPointを操作する方法についてお伝えしています。今回はエクセル上のグラフのデータ範囲を変更しながら次々にPowerPointに貼り付けていくプログラムについて紹介をします。

どうぞお楽しみに!

連載目次:エクセルVBAでグラフとPowerPointを操作する

エクセルで様々な集計や分析をした結果の表やグラフを、最終的にPowerPointに貼り付け…という作業は結構多いですよね。1つ2つなら良いですが、大量にあった場合は大変です。そんな時にはVBAで自動化をしてしまいましょう!
  1. エクセルVBAでPowerPointを操作するための準備と最も簡単なプログラム
  2. エクセルVBAでPowerPointのプレゼンテーションを開く方法・スライドを取得する方法
  3. エクセルVBAでPowerPointスライド上のシェイプ一覧を取得する
  4. エクセルVBAでPowerPointの特定のシェイプのインデックス番号を調べる方法
  5. エクセルVBAでPowerPointのテキストボックスに文字を入力する
  6. エクセルVBAでPowerPointでタイトルを変更しながらスライドを大量に生成する
  7. 初心者でも分かる!エクセルVBAでグラフを操作し取り扱うための超基本の第一歩
  8. エクセルVBAでグラフの元となるデータ範囲を次々と変更するプログラム
  9. 簡単!エクセルVBAでシート上のグラフをコピーしてPowerPointにペーストする
  10. エクセルVBAでグラフのデータ範囲を変更しながらPowerPointに連続して貼り付ける
  11. エクセルVBAでグラフタイトルを変更する方法とChartTitleについて
  12. エクセルVBAでグラフの軸の最大値・最小値や軸タイトルを設定する方法
タイトルとURLをコピーしました