VBA練習問題
VBA100本ノック 71本目:パワーポイントへグラフを貼り付け

VBAを100本の練習問題で鍛えます
公開日:2021-01-20 最終更新日:2021-02-22

VBA100本ノック 71本目:パワーポイントへグラフを貼り付け


パワーポイントに既にある図をシートのグラフに差し替える問題です。


ツイッター連動企画です。
ツイートでの見やすさを考慮して、ブック・シート指定等を適宜省略しています。

VBAテスト用のサンプルデータは、VBA100本ノックの目次ページ からもダウンロードできます。
マクロVBAを初心者向けの基本から上級者向けの高度な内容までサンプルコードを掲載し解説しています。エクセル関数・機能・基本操作の入門解説からマクロVBAまでエクセル全般を網羅しています。


出題

出題ツイートへのリンク

#VBA100本ノック 71本目
アクティブシートには「グラフ1」があります。
ブックと同一フォルダにプレゼン1.pptxがあり、1スライド目に「図1」のオブジェクトがあります。
「図1」を「グラフ1」に差し替えてください。
縦横比維持して元の「図1」の大きさの範囲に収めてください。

マクロ VBA 100本ノック

マクロ VBA 100本ノック


サンプルファイルです。
https://excel-ubara.com/vba100sample/VBA100_71.xlsm
https://excel-ubara.com/vba100sample/prezen1.pptx
https://excel-ubara.com/vba100sample/VBA100_71.zip


VBA作成タイム

この下に頂いた回答へのリンクと解説を掲載しています。
途中まででも良いので、できるだけ自分でVBAを書いてみましょう。


他の人の回答および解説を見て、書いたVBAを見直してみましょう。


頂いた回答

解説

回答でマクロ記録が使えればという意見がありましたが、普通に使えたのは2003までで、2007までかろうじて使えていました。
そういう時は、参照設定してインテリセンスを使ったり、ローカルウィンドウ、ウォッチウィンドを使って調べてください。
てっとり早いのはWEB検索だとは思いますが。

Sub VBA100_71_01()
  Dim ws As Worksheet: Set ws = ActiveSheet
  
  'オブジェクトを明示して説明するために参照設定しています。
  Dim ppApp As New PowerPoint.Application
  'Excelに同じオブジェクト名が無いのでPowerPoint.を省略できる
  Dim ppPt As Presentation
  Dim ppSlide As Slide
  'ShapeはExcelと同じオブジェクト名になってしまうのでPowerPoint.が必要
  Dim ppShape1 As PowerPoint.Shape
  
  'パワポ側のオブジェクト設定
  Set ppPt = ppApp.Presentations.Open(ThisWorkbook.Path & "\prezen1.pptx")
  Set ppSlide = ppPt.Slides(1)
  Set ppShape1 = ppSlide.Shapes("図1")
  
  '図としてコピー
  ws.ChartObjects(1).Chart.CopyPicture Appearance:=xlScreen, Format:=xlPicture
  
  With ppSlide.Shapes.Paste
    '縦横比固定
    .LockAspectRatio = msoTrue
    'グラフが小さい場合に元図形まで大きくするなら
    .Width = ppShape1.Width
    .Height = ppShape1.Height
    'サイズを元図形の範囲内に収める
    If .Width > ppShape1.Width Then .Width = ppShape1.Width
    If .Height > ppShape1.Height Then .Height = ppShape1.Height
    '元図形の中央に配置
    .Top = ppShape1.Top + ((ppShape1.Height - .Height) / 2)
    .Left = ppShape1.Left + ((ppShape1.Width - .Width) / 2)
  End With
  
  '元図形の削除
  ppShape1.Delete
  'パワポの保存
  ppPt.Save
  'パワポの終了
  ppApp.Quit
  '念の為
  Set ppApp = Nothing
End Sub


今回はVBAにコメントを記載しました。
パワポでもShapeの扱いはエクセルとほとんど同じです。
Shape.Copyで貼りつけてしまうとリンクされてしまうので、図としてコピー貼り付けしています。
補足はありません。VBAとコメントを確認してください。


補足

補足はありません。


サイト内関連ページ

Excelの表をPowerPointへ図として貼り付け
・Excelの表をPowerPointへ図として貼り付けるVBA ・Excelの表をPowerPointへ図として貼り付けるVBAの解説 ・グラフをPowerPointへ貼り付け ・既にパワーポイントを開いている場合
VBAで表やグラフをPowerPointへ貼り付ける
・表やグラフをPowerPointへ貼り付けるVBA ・PowerPointを使う準備と保存終了 ・表(セル範囲)をPowerPointへ貼り付けるVBAの解説 ・グラフをPowerPointへ貼り付けるVBAの解説 ・貼り付け時のエラー対応 ・既にパワーポイントを開いている場合




同じテーマ「VBA100本ノック」の記事

68本目:全テキストボックスの転記
69本目:ダブルクリックでセル結合を解除
70本目:ステータスバーに1秒ごとに時刻が表示
71本目:パワーポイントへグラフを貼り付け
72本目:ITをDXに変換(文字列操作)
73本目:新規ブックにボタン作成しマクロ登録
74本目:1シート複数表をDB形式に変換
75本目:ログインフォームの作成
76本目:ボタンの表示名の位置へ移動
77本目:シート挿入イベント
78本目:グラフのデータ範囲拡張


新着記事NEW ・・・新着記事一覧を見る

AIは便利なはずなのに…「AI疲れ」が次の社会問題になる|生成AI活用研究(2026-02-16)
カンマ区切りデータの行展開|エクセル練習問題(2026-01-28)
開いている「Excel/Word/PowerPoint」ファイルのパスを調べる方法|エクセル雑感(2026-01-27)
IMPORTCSV関数(CSVファイルのインポート)|エクセル入門(2026-01-19)
IMPORTTEXT関数(テキストファイルのインポート)|エクセル入門(2026-01-19)
料金表(マトリックス)から金額で商品を特定する|エクセル練習問題(2026-01-14)
「緩衝材」としてのVBAとRPA|その終焉とAIの台頭|エクセル雑感(2026-01-13)
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
8.マクロとは?VBAとは?VBAでできること|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.メッセージボックス(MsgBox関数)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。
This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ