71本目 PowerPointにグラフを貼り付ける

VBA100本ノック

VBA100本ノック 71本目を動画で解説しています。Excelの神髄さんの模範解答はコチラ


問題

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

解答

Sub パワポを扱う()
    
    Dim ppApp As New PowerPoint.Application  'アプリ本体
    Dim ppPt As Presentation 'パワポのファイル、ブック
    Dim ppSl As Slide 'パワポのスライド
    Dim ppSh As PowerPoint.Shape 'パワポの図形(ShapeはExcelと同名の型があるためPowerPointを付ける)
    
    Set ppPt = ppApp.Presentations.Open(ThisWorkbook.Path & "\prezen1.pptx") '開く
    Set ppSl = ppPt.Slides(1)
    Set ppSh = ppSl.Shapes(1)  '図1  shapes("図1") のようにNameを指定してもOK
    
    Dim ws As Worksheet: Set ws = Sheets("Sheet1")
    ws.ChartObjects(1).Copy
    
    With ppSl.Shapes.Paste 'ppShの位置と大きさに合わせたい
        .Width = ppSh.Width
        .Height = ppSh.Height
        .Top = ppSh.Top
        .Left = ppSh.Left
    End With
    
    ppSh.Delete
    
End Sub

■考え方・流れ
0:00 冒頭・問題確認
1:38 VBAでパワポを扱う
5:01 指定のパワポを開く
6:41 パワポの構造を理解する
9:33 スライドにグラフを貼り付ける
11:20 グラフの位置と大きさを調整する

新人君
新人君

uぷ主はが結構
得意なやつですね!

ブチョ
ブチョ

自慢か?
最低だな!

新人君
新人君

お前に言われたくない…

VBAでパワポを扱う

さて!じゃあまずは…
VBAでパワポを扱う方法からだ!!

方法は二つ!!

一つ目!CreateObject関数を使う方法!!

二つ目!参照設定する方法!

それぞれの比較…

参照設定すると、インテリセンスが出るから初心者さんにはお勧めだぞ!!

指定のパワポを開く

よし!そしたらお次!
指定のパワポを開いていこう!

こんな感じ!
Openメソッドさんなんて…Excelと一緒やないかい!!

置換と言えば…
Replace関数さんだ!!!

実行結果↓

パワポの構造を理解する

よし!続いて!
パワポの構造をみてみよう!!

Excelだったら…
Excelアプリ→ブック→シート→セル

パワポの場合は…
パワポアプリ→プレゼンテーション→スライド→シェイプ

こんな感じだね!

つまり!もし、パワポのスライドの1枚目を指定したい場合!!

ppPt.Slides(1)
ってかんじだ!!

じゃあお次は…
1スライド目の、1つ目のシェイプを指定したい場合!!!

これはこんな感じだ!!!(Set がsettになってるのは見なかったことにしてくれ…)

スライドにグラフを貼り付ける

よし!じゃあお次!!
実際にスライドにグラフを貼り付けていくぞ!!!

まずはExcelの方のグラフをコピーするところから!!

お次は貼り付け!!!
Excelでは、シート.Pasteだったよな!!
それが、スライド.Pasteに変わっただけだ!!

実行結果!!やったぜ!!!

グラフの位置と大きさを調整する

よし!!じゃ最後に!!
グラフの位置を大きさを調整して終わりにするぞ!!!

これも今までに何度か出てきた…
width,height,left,topのプロパティ四天王さんたちを決めてあげればOKOK!!

これを何に合わせるかというと…!
元々貼ってあった、青色の図形のところに貼り付けてあげる!!

最後!!!ppSh.Deleteで、元々あった図形を削除してあげれば完成!!

終わりだよーーん!!

ブチョ
ブチョ

お疲れさま!

新人君
新人君

お疲れさまでした!

あとがたり

おはこんばんちは。uぷ主です。
71本目、PowerPointにExcelのグラフを貼り付ける問題でした…

これは簡単簡単!!(慣れれば)
パワポのオブジェクト構造さえ理解出来たらいろんなことができるぞ!!

ただ…「パワポ 操作 VBA」とかでググったら…
みんなやり方がそれぞれだから、初心者さんがつまづくんだよなぁ~(経験大あり)

参照設定してたり、してなかったり…
変数名も人それぞれだったり…

せめて、アプリとブックの変数名ぐらいは、特定の文字列が入ってる変数じゃないと
駄目です的なルールなら良かったのにね!!
objPPt○○とかね!!

ま、それだとそれで不都合起きそうかwwww

知らんけど…ww

コメント

タイトルとURLをコピーしました