Excelのデータをパワポのスライドへ1行ずつ貼り付けるマクロ

  • URLをコピーしました!

Excelのデータをパワポに貼り付けるのを自動化するのにマクロを使っています。

※Excelとパワポの画面 by Canon R6+50mmF1.8

Excelをパワポにしたい

Excelのデータがあり、それをパワポに使いたいなら、
・Excelデータをコピー
・パワポに貼り付け
で、できます。

ただ、それを繰り返すとなるとなんとかしたいものです。
コピペの繰り返しは、人類の時間の無駄ですので。

コピペの繰り返しはマクロ(VBA)で自動化できます。
今回ご紹介するのは、Excelマクロ。
Excelマクロでパワポも操作できます。
(今回は、パワポマクロではなくExcelマクロです。)

私が使っているのは、Q&A。
事前にいただいた質問をパワポにするときに使っています。
Excelまたは、CSVやGoogleスプレッドシートでデータをExcelに貼り付け、


マクロを実行すれば、このようにパワポのスライドにできるのです。
データがいくつあっても一瞬で。

このつくり方をまとめてみました。

Excelマクロでパワポを操作

まず、Excelマクロでパワポを操作する設定を確認しましょう。
ExcelでAlt+F11を押し、VBE(ビジュアルベーシックエディター)を開きます。
ここで、[ツール]→[参照設定]を選び、

[Microsoft Offce  ○○ Object Libray]にチェックが入っているか確認しましょう。
(○○はバージョンです)

これで準備完了です。

VBEでAlt→I→Mと押し(1つずつ)、標準モジュールというものを入れ、ここにマクロ(コード)を書いていきます。

Subのあとのマクロ名は任意です。

Sub Excel_PP()

'設定
    Dim ppt
    Set ppt = CreateObject("PowerPoint.Application")
    
'パワポを起動
    Dim ppts
    Set ppts = ppt.presentations.Add

End Sub

まずはここまで書いてみて、実行してみましょう。 パワポが起動すればOKです。 次に進みましょう。

 

Excelデータを1つずつパワポスライドへ

次にExcelのデータを繰り返し読み取ります。 ここで使うのは、for。 1行目から、最終行(データがあるだけ)繰り返すなら、こう書きます。 これで、Excelデータがいくつあっても自動的に処理できるのです。 人類がコピペを繰り返すことはありません。 (追加部分は太字)

Sub Excel_PP()

'設定
    Dim ppt
    Set ppt = CreateObject("PowerPoint.Application")
    
'パワポを起動
    Dim ppts
    Set ppts = ppt.presentations.Add
   
    Dim i
    For i = 1 To Range("a" & Rows.Count).End(xlUp).Row
        

        
    Next

End Sub

スライドを追加していきます。
パワポにはスライドのレイアウトというものがあり、それを指定しなければいけません。

ここで選んだのは、[タイトルとコンテンツ]。
このレイアウトの番号は、16なのです。
パワポのオブジェクトブラウザでわかります。

このレイアウトのスライドを、1枚目、2枚目、3枚目……と追加していくのです。
こう書きます。
Dim slide Set slide = ppts.slides.Add(Index:=i, Layout:=16)

そして、そのスライドの2番めのボックスにExcelのA列のデータを、セルA1、A2、A3……と順番に入れていくわけです。
slide.Shapes(2).TextFrame.TextRange.Text = Range(“a” & i).Value ‘データ挿入

データをパワポのタイトル部分に入れたければ、Shapes(1)にしましょう。

この部分は箇条書きになるので、最後に箇条書き解除を入れてみました。 slide.Shapes(2).TextFrame.TextRange.ParagraphFormat.Bullet.Visible = msoFalse ‘箇条書き解除

 

最終的にこうなります。 (追加部分は太字)

Sub Excel_PP()

'設定
    Dim ppt
    Set ppt = CreateObject("PowerPoint.Application")
    
'パワポを起動
    Dim ppts
    Set ppts = ppt.presentations.Add
   
    Dim i
    For i = 1 To Range("a" & Rows.Count).End(xlUp).Row
        
'スライドを追加
        Dim slide
        Set slide = ppts.slides.Add(Index:=i, Layout:=16)
        slide.Shapes(2).TextFrame.TextRange.Text = Range("a" & i).Value  'データ挿入
        slide.Shapes(2).TextFrame.TextRange.ParagraphFormat.Bullet.Visible = msoFalse  '箇条書き解除
        
    Next

End Sub

「Excelをパワポに貼り付け?この私(おれ、ぼく、あたし、うち、わし)がそんなことに時間を使えるか!」と疑問に感じるのが第一歩です。
(人を雇っていれば、「よろしく!」で済むんでしょうけど……。その方の時間を奪い、スキルを伸ばす機会をも奪ってしまいます)

 もし使える場面があれば、使ってみていただければ。

 

 



■編集後記
昨日は終日雨。
午前中は娘のダンスイベント。
屋外(娘たちは屋根付き)でしたが、なんとか。

午後はPS5 FIFA23の練習。

1日1新Kindle『1日1新』
娘のとある場所でのイベント
ポップコーンを乾燥とうもろこしから

■娘(5歳)日記→Kindle『娘日記』・ Kindle『娘日記Ⅱ』
朝からダンスイベントのリハーサル。
終わってからカフェで休憩して本番。
雨で寒い中無事に終わりました。
終わってからは、暖かいものを……とうどんを。
うどん屋が混んでいたいので、回転寿司で。

帰宅してからは、動画を見たり、一緒にポップコーンをつくったり。
乾燥とうもろこしから粒を外すのも手伝ってくれました。

  • URLをコピーしました!