PowerPointに貼り付けたエクセルのグラフのサイズを変えよう【VBA】

目次

環境

Windowsの仕様

エディション:Windows 10 Pro

バージョン:20H2

経緯

PowerPointに貼り付けたエクセルのグラフのサイズを変えたくて、

今回、勉強しました。

コード

PowerPointのスライド上でオブジェクトのサイズを特定の値(この場合、高さ5cm、幅8cm)に設定するには、VBAでHeightとWidthプロパティを指定したサイズに変更します。PowerPointでは、これらのプロパティはポイント単位で指定されます。1cmは約28.35ポイントに相当します。

では、コードです。

Sub ExportGraphToPowerPoint()
    Dim ppApp As Object
    Dim ppPres As Object
    Dim ppSlide As Object
    Dim ChartObj As ChartObject
    Dim pptTemplatePath As String
    Dim newFileName As String
    Dim myShape As Object
    Dim desiredWidth As Single
    Dim desiredHeight As Single

    ' サイズをポイントに変換(1cm = 28.35ポイント)
    desiredWidth = 8 * 28.35  ' 幅8cm
    desiredHeight = 5 * 28.35 ' 高さ5cm

    ' 現在の日付を取得してファイル名に設定
    Dim defaultFileName As String
    defaultFileName = "\テンプレ_" & Format(Now, "yyyymmdd") & ".pptx"

    ' ファイル保存ダイアログを表示
    newFileName = Application.GetSaveAsFilename(InitialFileName:=ThisWorkbook.Path & defaultFileName, _
        FileFilter:="PowerPoint プレゼンテーション (*.pptx), *.pptx", _
        Title:="保存先を選択してください")

    ' キャンセルされた場合は処理を中止
    If newFileName = "False" Then Exit Sub

    ' 現在のExcelファイルのパスを基準に相対パスを設定
    pptTemplatePath = ThisWorkbook.Path & "\..\テンプレ.pptx"

    ' PowerPointアプリケーションの開始
    Set ppApp = CreateObject("PowerPoint.Application")
    ppApp.Visible = True

    ' PowerPointテンプレートの開く
    Set ppPres = ppApp.Presentations.Open(pptTemplatePath)

    ' Excelグラフのコピー
    Set ChartObj = ThisWorkbook.Sheets(1).ChartObjects("graph")
    ChartObj.Copy

    ' PowerPointの1番目のスライドに貼り付け
    Set ppSlide = ppPres.Slides(1)
    Set myShape = ppSlide.Shapes.Paste

    ' グラフのサイズを指定された寸法に調整
    myShape.Width = desiredWidth
    myShape.Height = desiredHeight

    ' 新しいファイル名で保存
    ppPres.SaveAs newFileName

    ' オブジェクトの解放
    Set myShape = Nothing
    Set ppSlide = Nothing
    Set ppPres = Nothing
    ppApp.Quit
    Set ppApp = Nothing
End Sub

長々書きましたが、グラフのサイズの部分は以下のところです。

    Dim desiredWidth As Single
    Dim desiredHeight As Single

    ' サイズをポイントに変換(1cm = 28.35ポイント)
    desiredWidth = 8 * 28.35  ' 幅8cm
    desiredHeight = 5 * 28.35 ' 高さ5cm

〜〜〜
    ' グラフのサイズを指定された寸法に調整
    myShape.Width = desiredWidth
    myShape.Height = desiredHeight

という感じでできました。

グラフサイズと関係ないコードの説明は

まず、保存先を決めて、ファイル名を決めています。

次に、テンプレパワポファイルがあるので、それを開いて、グラフを貼っている。

という流れです。

参考になれば、幸いです。

ここまで読んでいただきありがとうございました。

スクールの紹介

最後に宣伝をさせてください。

夢見るAIエンジニアへ、今こそ一歩を踏み出せ!

最近、AI技術やデータサイエンスに興味を持ち始めたあなた。将来、AIエンジニアやデータサイエンティストとして活躍したいと考えているかもしれません。また、AIを使って業務課題や研究課題を解決したい、あるいは教養としてAIの知識を深めたいと思っている方もいるでしょう。

しかし、学び始めるとなると「どこから手をつけて良いのか分からない」「専門的すぎて理解できない」といった悩みが生じることも。そんなあなたのために、この3ヶ月間集中してAIプログラミングを習得するオンラインコーチングサービスがオススメです!

なぜこのサービスが選ばれるのか?その理由はこちら

  1. 初心者から上級者まで
    完全なプログラミング初心者から研究者まで、幅広い方々に優良なコンテンツが提供されます。
  2. 徹底的な進捗管理
    受講者の進捗をしっかりとチェックし、つまずきやすいポイントでのフォローが万全です。
  3. 専属メンターによる徹底サポート
    AIの学び方から、実際の適用まで、専属のメンターが手厚くサポートします。
  4. 場所を選ばず学べるオンライン完結
    東京以外の地域からも、気軽に学び始めることができます。

信頼の実績多数!
・日本最大級のプログラミングスクール実績
・受講者総数700名以上
・SaaS型学習サービス会員65,000名以上
・企業導入実績120社以上
・グッドデザイン賞受賞
・著名な賞受賞歴や経団連加盟も実現

夢を叶えるための第一歩を、一緒に踏み出しませんか?今なら、あなたもその一員として学び始めることができます!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次