みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
エクセルVBAでPowerPointを操作する方法についてお伝えしています。
前回の記事はこちらです。
PowerPointとは少し離れまして、エクセル上のグラフのデータ範囲をVBAを使って変更する方法についてお伝えしました。
データ範囲を変更してグラフを次々と変化させながら、そのグラフをPowerPointに貼り付けていくことができれば、大量のグラフが必要な資料もアッという間にできるのではないか!?ということですね。
実際できますけどね。
今回は再度PowerPointに戻りまして、VBAによりエクセル上のグラフをPowerPointに貼り付ける方法についてお伝えします。
では、行ってみましょう。
今回のお題の確認とPowerPointファイルを開くおさらい
今回も引き続き、こちらのPowerPointファイル「ひな形.pptx」を使います。
単純にこの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
詳細は以下の記事をご覧ください。
このプログラムの7行目と9行目の間に、エクセルシート上のグラフを貼り付ける処理を入れていけばOKということになります。
エクセルのグラフをPowerPointに貼り付ける
エクセルのグラフを選択して Ctrl + C 、そして貼り付け先のPowerPointのスライドを開いて Ctrl + V でペースト。
そんな作業もVBAで実現することができます。
VBAで実施する場合も、コピーとペーストをそれぞれ別のステートメントで行いますよ。
CopyPictureでグラフをコピーする
エクセルシート上のグラフをコピーする場合はChartオブジェクトに対するCopyPictureメソッドを使ってこのように書きます。
これで、該当のChartオブジェクト(つまりグラフ)が画像としてクリップボードにコピーされます。
パラメータですが、コピー形式は以下2種類です。
名前 | 説明 |
---|---|
xlScreen | 画面の表示にできる限り近い形でコピー |
xlPrinter | 画面の印刷するときと同じ形でコピー |
省略可能で既定値はxlScreenです。ほとんどの場合は、xlScreenで問題ないです。
もう一つのパラメータ、ピクチャ形式は以下2種類です。
名前 | 説明 |
---|---|
xlPicture | ドロー画像 |
xlBitmap | ビットマップ |
省略可能で既定値はxlPictureです。ビットマップは容量が重いので、特に理由がない限りはxlPictureを選べばよいと思います。
Pasteメソッドで画像をペーストする
次にペーストですね。
PowerPointのスライドにコピーした画像をペーストする場合は、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」とします。以下の記事の方法で取得できます。
こちらを実行しますと…
無事に貼り付けできました。
ですがちょっと小さいですね…元のグラフのサイズを大きくしてあげましょう。
A4横ならば、20cm×12cmくらいでちょうどよいですかね。
エクセルでグラフを選択した状態で、リボンのグラフツール「書式」にてサイズを変更します。
これで再度実行してみます。
ほどよい感じですね。
まとめ
エクセルのシート上のグラフをPowerPointに貼り付ける方法についてお伝えしました。
簡単ですね。
次回はいよいよグラフのデータ範囲を変更しながら、次々とスライドにグラフを貼り付けていく繰り返し処理にしていきたいと思います。
どうぞお楽しみに!
連載目次:エクセルVBAでグラフとPowerPointを操作する
エクセルで様々な集計や分析をした結果の表やグラフを、最終的にPowerPointに貼り付け…という作業は結構多いですよね。1つ2つなら良いですが、大量にあった場合は大変です。そんな時にはVBAで自動化をしてしまいましょう!- エクセルVBAでPowerPointを操作するための準備と最も簡単なプログラム
- エクセルVBAでPowerPointのプレゼンテーションを開く方法・スライドを取得する方法
- エクセルVBAでPowerPointスライド上のシェイプ一覧を取得する
- エクセルVBAでPowerPointの特定のシェイプのインデックス番号を調べる方法
- エクセルVBAでPowerPointのテキストボックスに文字を入力する
- エクセルVBAでPowerPointでタイトルを変更しながらスライドを大量に生成する
- 初心者でも分かる!エクセルVBAでグラフを操作し取り扱うための超基本の第一歩
- エクセルVBAでグラフの元となるデータ範囲を次々と変更するプログラム
- 簡単!エクセルVBAでシート上のグラフをコピーしてPowerPointにペーストする
- エクセルVBAでグラフのデータ範囲を変更しながらPowerPointに連続して貼り付ける
- エクセルVBAでグラフタイトルを変更する方法とChartTitleについて
- エクセルVBAでグラフの軸の最大値・最小値や軸タイトルを設定する方法