パソコンスキルの教科書

パソコンスキルの教科書

東京大学大学院卒。博士課程に進学を志すも、担当教授と折が合わず、無職になる。医者を目指すも結局断念。田舎で派遣社員として働く。「スキルがなければ、仕事ももらえない」と悟り、ビジネススキルを学ぶ。プログラミング、英語を学び、一部上場企業へ転職。年間100時間以上の業務効率化を行い、社内講師に抜擢。海外の案件を担当し、数億円のプロジェクトに携わる。個人の事業でも、月売上100万を達成。現在は、自分の価値を高めるためのスキル向上支援を行う

パワーポイントにグラフを自動貼付!エクセルVBAでパワポを操作する方法|事例&コード付

f:id:gene320:20181126233617j:plain

エクセルの計算結果やグラフなどのチャートをパワポに貼り付ける作業があります。

このような作業をするとき、以下のように感じる人は少なくないはずです。

・グラフを一つ一つパワポにコピペするのは非効率…
・パワポ資料の文字の大きさ、x軸y軸のテキスト、最大値や最小値を全て揃えるのは面倒
・パワポ操作という高いレベルのVBAプログラミングを使いこなしたい!
・とにかく仕事でラクに終わらせたい!

そこで、この記事ではエクセルで作成したグラフをパワポに貼り付ける作業を自動化する方法を紹介します。

エクセル上の複数のグラフをパワポに連続でコピペする事例をプログラムコードに解説を入れながらお伝えしていきます。

エクセルマクロでパワーポイントを操作する事例

パワーポイントを操作するマクロについてイメージをつかんでもらうために、事例を紹介します。


エクセル上のグラフをPowerpointに連続貼付を行う作成

この動画では、すでにエクセル上にグラフが作成された状態をスタートにしています。

そのため、まずはエクセルにグラフを作成する必要があります。

ただ、グラフ作成のマクロ関しては、この記事では解説をしていません。

もし、エクセル上にグラフを自動作成するVBAプログラムを知りたいなら、以下の記事で解説しています。

www.fastclassinfo.com

まずは、エクセルVBAでパワポを操作するマクロを作成するときの全体像について以下で紹介します。

エクセルマクロでパワーポイント資料を作成|メリット/デメリット

エクセルマクロVBAでパワーポイントの資料を作成する場合、メリットとデメリットがあります。

パワポのマクロは使いどころがあるので、メリットとデメリットを理解して使い分けるのが重要です。

メリットとデメリットは以下です。

●メリット
[1] プログラム作成に難しい準備が要らない
[2] 定型業務であれば、パワポ作成作業の効率化が期待できる
[3] 仕事のミスが減る

●デメリット
[1] 初心者には見慣れないコードが多い
[2] パワポ操作マクロは使い勝手がよくないことが多い
[3] 書籍でも有益な情報が少ない

以下で詳しく解説していきます。

エクセルマクロでパワーポイントを操作するメリット

まず、メリットから紹介します。

●メリット
[1] プログラム作成に難しい準備が要らない
[2] 定型業務であれば、パワポ作成作業の効率化が期待できる
[3] 仕事のミスが減る

一つずつ説明します。

[1] プログラム作成には難しい準備が要らない

エクセルマクロを使ってパワポを操作する場合、難しい準備は不要です。

パワーポイントとエクセルさえインストールされていれば、無料で使うことが可能です。

ただし、パワーポイントを操作するためにエクセルVBAのライブラリ設定をする必要があります。

この設定方法については、プログラムを説明するときに詳しくお伝えします。

[2] 定型業務であれば、パワポ作成作業の効率化が期待できる

パワポ資料の作成作業が定型であれば、作業時間の効率化を期待できます。

例えば毎月の報告会で作成する資料であれば、効率化することが可能です。

仮に手入力でパワポ資料を作成する場合、作成時間は「パワポ資料のスライド数×1スライドあたり作成時間」で計算できます。

スライド数が10枚で、1スライドあたり作成時間が2分であれば、20分かかることになります。

しかし、マクロを使って自動化すればボタン一つで作業が終わります。

このき、スライド10枚でもグラフ100枚でも作業時間は同じです。

もちろん、最初にマクロを作成する作業はあります。

しかし、一度マクロを作成してしまえば、今後発生する作成作業は全てマクロでボタン一つで終わらすことができます。

[3] 仕事のミスが減る

定例の資料作成で厄介なことの一つに、細かな修正があります。

なぜなら一つずつ人の手で作成するため、必ずミスが発生してしまいます。

例えば、文字の大きさ、x軸y軸のテキスト、最大値や最小値の幅はミスが出がちです。

しかしこのような作業は、どれだけ確認しても必ず一つや二つはミスが残ってしまいます。

そこで、このようなミスが発生しやすい作業をマクロ設定してしまうのです。

そうすれば、コピペミスやタイプミスがなくなります。

同じ文字サイズでx軸y軸のテキストが入って最大値や最小値も入力された状態で作成されるのです。

また、動画で紹介しているようなパワポ作成の自動化ができれば、人に仕事を渡すのが容易になります。

エクセルマクロでパワーポイントを操作するデメリット

次にデメリットを紹介します。

●デメリット
[1] 初心者には見慣れないコードが多い
[2] パワポ操作マクロは使い勝手がよくないことが多い
[3] パワポ作成マクロは書籍やウェブ上にあまり事例が出回っていない

以下で一つずつ説明していきます。

[1] 初心者には見慣れないコードが多い

エクセルVBAからパワポ操作をするとき、コード編集が難しいと感じることがあります。

なぜなら、パワポ特有のプログラムが数多く出てくるからです。

例えばスライド追加したりパワーポイントを開いたりする操作をするとき、見慣れないコードと感じる人は多いはずです。

そのため、エクセルのセル文字列やシート間の転記のようなプログラムばかり書いてきた人は戸惑ってしまうかもしれません。

特に、初心者は「パワポ操作のマクロは知らないプログラムばかり…」となってしまいがちです。

その結果、慣れないプログラムを理解できず途中で挫折してしまうことがあります。

[2] パワポ操作マクロは使い勝手がよくないことが多い

はっきり言いますが、パワポ操作マクロは使い勝手がいい場面は少ないです。

なぜなら、定型資料を作成する場面は少ないからです。

例えば、定型作業として、各事業所の売上をパワーポイントで資料作成するとします。

このとき、パワーポイントで伝えるメッセージはスライド毎に異なります。

そのため、パワポ操作マクロを使って定型作業の全てを自動化するというのは簡単ではないのです。

ただ、定型部分と非定形部分を見極めれば、多少は使える場面はあります。

その場合、マクロ化する箇所と手入力の箇所を分ける必要になります。

このように使い勝手が悪い部分があるので、パワポ操作のマクロは使いどころを見極めるのが肝心です。

[3] パワポ作成マクロは書籍やウェブ上にあまり事例が出回っていない

パワポ操作は、エクセルVBAの外部連携というカテゴリーです。

外部アプリケーションを操作するマクロ作成は、高いレベルが求められます。

ただ、レベルが高いため、書籍やウェブに事例コードが出回っていません。

もちろん、断片的で辞書的な説明をしているものならあります。

しかし、事例ベースの情報が少ないため、最初に参考すべき軸となるコードがあまり出回っていないのが現実です。

実際、私自身がパワポマクロを作成するのに苦労しました。

そのような経験もあり、この記事でパワポ操作マクロの情報をあなたに届けることにしました。

パワポ操作マクロで実際に効率化した事例|各拠点のデータを可視化

上記で、「[2] パワポ操作マクロは使い勝手がよくないことが多い」とお伝えしました。

実際、パワポ操作マクロが役に立つ場面は少ないのが正直なところです。ただ、パワポマクロで効率化できることもあります。

実際にあったのが、外資系企業に勤務していた派遣社員の人の事例です。

その人は全国の各拠点の売上データを本社でまとめる仕事をしていました。

各拠点の報告データをグラフ処理してパワポ資料を毎月作成していたのです。

その資料を使って上司が月例で上層部に報告していました。

そこで、この資料作成ルートを効率化し、パワーポイント作成までマクロ化したのです。

このようなパワーポイント作成作業であれば、大いに効率化できる余地があります。

それこそ、各拠点からのデータ収集から効率化すれば、月10時間以上の作業効率化も難しくはありません。

ただ、このような作業はあまり多くありません。

実務では、以下のようなデータ分析や転記作業をマクロ化を考える方が効率化しやすいです。

www.fastclassinfo.com

www.fastclassinfo.com

それでは、以下でパワーポイント操作のマクロを作成する方法について具体的にお伝えしていきます。

パワーポイント操作のマクロを作成する前の準備|参照設定を変更

エクセルマクロVBAでPowerpointを操作するためには、準備しておくことがあります。

準備|VBEで外部ライブラリへの参照設定でPowerPoint Libraryを追加

参照設定とは、機能拡張のことです。

エクセルVBAからパワーポイントを操作をする場合は、Microsoft PowerPoint 16.0 Object Libraryにチェックを入れる必要があります。

これにチェックを入れることで、Outlook操作の設定ができるようになります。

ただバージョンが新しかったり古かったりする場合、16.0ではないときがあります。

もし16.0がない場合は、「Microsoft PowerPoint (xxx) Object Library」にチェックを入れれば問題ありません。

(xxx)には数値が入っています。どの数値でも基本は問題ありません。

それでは、以下で具体的な設定方法を紹介します。

設定方法

1.VBEを開いて頂いて、「ツール」→「参照設定」
2.Microsoft PowerPoint 16.0 Object Libraryのライブラリにチェックを入れて、OKをクリック

詳細はこちらの画像の通りです。

1.VBEを開いて頂いて、「ツール」→「参照設定」

f:id:gene320:20170613213650p:plain

2.Microsoft PowerPoint 16.0 Object Libraryのライブラリにチェックを入れて、OKをクリック

f:id:gene320:20181125212748j:plain

これで準備は終了です。以下で、プログラムの解説をしていきます。

パワーポイントにグラフを自動貼付|サンプルコードを使って解説

以下で紹介するコードは、エクセルで作成したグラフをパワーポイントに貼り付ける作業を自動化します。

したがって、事前にグラフを作成しておく必要があります。

つまり、以下のステップで分けたとき、この記事で紹介するのはマクロ2だけです。

マクロ1|エクセルでグラフを作成する
マクロ2|作成したグラフをパワーポイントに貼り付ける

もし、「マクロ1|エクセルでグラフを作成する」について、マクロを使ってグラフを自動作成する方法を知りたいなら、以下の記事で読んでみてください。

www.fastclassinfo.com

この記事で紹介するマクロを使うときの注意点

この記事で紹介するマクロを使うとき、注意点が1つあります。

それは、使用するエクセルファイルと同じフォルダに「template.pptx」というパワーポイントファイルを事前に準備しておく必要があることです。

「template.pptx」というパワーポイントファイルがないと、パワーポイントを呼び出せません。

それでは、作成したグラフをパワーポイントに貼り付けるマクロ(マクロ2)について詳しく解説をしていきます。

コピペして使えるパワーポイント連携マクロ

この記事の動画で解説しているマクロのプログラムを紹介します。

●注意
以下のエクセルVBAを使う前に、エクセルファイルと同じフォルダに「template.pptx」というパワーポイントファイルを事前に準備してください。
「template.pptx」というパワーポイントファイルがないと、マクロを動かしたときエラーが出ます。
'ステップ0|開始のおまじない
Option Explicit
Sub makeppt_chart()
    
    'ステップ1|変数定義
    Dim ws1 As Worksheet, ws2 As Worksheet
    Dim str As String, yymmdd As String
    Dim kazu As Long, c As Long
    Dim countSld As Long
    Dim pptfile As String, title As String, subtitle As String, pic As String
    
    'ステップ2|変数に情報を入れ込む
    Set ws1 = Worksheets("データ")
    Set ws2 = ActiveSheet
    
    title = ws1.Range("N9").Value
    subtitle = ws1.Range("N10").Value
    pic = ws1.Range("N11").Value
    
    'ステップ3|日付をyymmddに変換
    yymmdd = Format(Date, "yymmdd")
    pptfile = ws1.Range("N8").Value & yymmdd
    
    'ステップ4|パワーポイント(アプリケーション)を起動
    Dim ppApp As New PowerPoint.Application
    ppApp.Visible = True
     
    'ステップ5|パワーポイントファイル「template.pptx」を開く
    Dim pptx As PowerPoint.Presentation
    Set pptx = ppApp.Presentations.Open(ThisWorkbook.Path & "\template.pptx")
    
    'ステップ6|「template.pptx」の一枚目のスライドを操作する
    Dim pptxsl As PowerPoint.Slide, pptxsl2 As PowerPoint.Slide, obj As Object
    Set pptxsl = pptx.Slides(1)
    
    'ステップ7|一枚目のスライドにタイトルを作成する
    If pptxsl.Shapes.HasTitle Then
        pptxsl.Shapes.title.TextFrame2.TextRange.Text = title
        pptxsl.Shapes.title.TextFrame2.TextRange.Font.Size = 40
    End If
    
    'ステップ8|一枚目のスライドにテキストボックスを追加する
    pptxsl.Shapes.AddTextbox(msoTextOrientationHorizontal, _
    Left:=250, Top:=150, Width:=450, Height:=300).TextFrame2.TextRange.Text = _
        subtitle & vbCrLf & vbCrLf & _
        "作成者 " & pic & vbCrLf & vbCrLf & _
        "作成日 " & yymmdd
    
    'ステップ9|エクセルのシート数を調べる
    kazu = Worksheets.Count
    
    'ステップ10|for next構文でエクセルの各シートを一つずつ処理する
    For c = 0 To kazu - 1
    
        'ステップ11|If文でエクセルのシートで「データ」でない場合を調べる
        If Worksheets(kazu - c).Name <> "データ" Then   
            Worksheets(kazu - c).Activate
            ActiveSheet.ChartObjects.Select
            str = Worksheets(kazu - c).Range("B1").Value
            
            'ステップ12|パワーポイントファイルのスライド数を調べる
            countSld = pptx.Slides.Count
            
            'ステップ13|1ページ目をコピーしてスライドの最後に複製する
            pptx.Slides(1).Duplicate.MoveTo (countSld + 1)
            
            'ステップ14|エクセルシートのグラフを画像としてコピーする
            ActiveChart.CopyPicture xlScreen, xlPicture
            pptx.Slides(countSld + 1).Select
            
            'ステップ15|パワーポイントの最後のスライドにグラフを貼り付ける
            pptx.Slides(countSld + 1).Shapes.Paste
            
            'ステップ16|貼り付けたグラフの位置を変更する
            With pptx.Slides(countSld + 1).Shapes(pptx.Slides(countSld + 1).Shapes.Count)
                .LockAspectRatio = msoTrue
                .Top = 100
                .Left = 130
                .Width = 700
            End With
            
            'ステップ17|最後のスライドのタイトルとフォントサイズを変更する
            pptx.Slides(countSld + 1).Shapes.title.TextFrame2.TextRange.Text = str
            pptx.Slides(countSld + 1).Shapes.title.TextFrame2.TextRange.Font.Size = 40
            
            Application.Wait Now + TimeValue("00:00:01")
            
         'ステップ18|余分なテキストボックスを削除する
            For Each obj In pptx.Slides(countSld + 1).Shapes
                If obj.Type = msoTextBox Then
                    obj.Delete
                End If
            Next
        End If
    
    'ステップ19|for next構文の繰り返しのおまじない
    Next
    
    'ステップ20|パワーポイントファイルを新しく保存する
   pptx.SaveAs ThisWorkbook.Path & "\" & pptfile & ".pptx"
   ppApp.Quit
   Set ppApp = Nothing
End Sub

マクロでPowerpointにグラフを自動貼付|パワーポイントの起動からスライド追加まで

それでは、プログラムの解説をしていきます。以下のステップに分けて説明します。

ステップ0|開始のおまじない
ステップ1|変数定義
ステップ2|変数に情報を入れ込む
ステップ3|日付をyymmddに変換
ステップ4|パワーポイント(アプリケーション)を起動
ステップ5|パワーポイントファイル「template.pptx」を開く
ステップ6|「template.pptx」の一枚目のスライドを操作する
ステップ7|一枚目のスライドにタイトルを作成する
ステップ8|一枚目のスライドにテキストボックスを追加する
ステップ9|エクセルのシート数を調べる
ステップ10|for next構文でエクセルの各シートを一つずつ処理する
ステップ11|If文でエクセルのシートで「データ」でない場合を調べる
ステップ12|パワーポイントファイルのスライド数を調べる
ステップ13|1ページ目をコピーしてスライドの最後に複製する
ステップ14|エクセルシートのグラフを画像としてコピーする
ステップ15|パワーポイントの最後のスライドにグラフを貼り付ける
ステップ16|貼り付けたグラフの位置を変更する
ステップ17|最後のスライドのタイトルとフォントサイズを変更する
ステップ18|余分なテキストボックスを削除する
ステップ19|for next構文の繰り返しのおまじない
ステップ20|パワーポイントファイルを新しく保存する

それでは以下で一つずつ説明していきます。

ステップ0|開始のおまじない

Option Explicit
Sub makeppt_chart()

1行目|Option Explicitで変数設定を強制する

2行目|makepptchartというタイトルのプログラムとして設定

ステップ1|変数定義

Dim ws1 As Worksheet, ws2 As Worksheet
Dim str As String, yymmdd As String
Dim kazu As Long, c As Long
Dim countSld As Long
Dim pptfile As String, title As String, subtitle As String, pic As String

1行目|ws1, ws2 をworksheet(ワークシート)型で変数定義

2行目|str, yymmddをstring(文字列)型で変数設定

3行目|kazu, c をLong(整数)型で変数定義

4行目|countSld をLong(整数)型で変数定義

5行目|pptfile, title, subtitle, pic をstring(文字列)型で変数設定

ステップ2|変数に情報を入れ込む

Set ws1 = Worksheets("データ")
Set ws2 = ActiveSheet
title = ws1.Range("N9").Value
subtitle = ws1.Range("N10").Value
pic = ws1.Range("N11").Value

1行目|ws1をエクセルのシート「データ」でセット

2行目|ws2をエクセルの今開いているシートにセット

3行目|titleをws1のセルN9の値にする

4行目|subtitleをws1のセルN10の値にする

5行目|picをws1のセルN11の値にする

ステップ3|日付をyymmddに変換

yymmdd = Format(Date, "yymmdd")
pptfile = ws1.Range("N8").Value & yymmdd

1行目|今日の日付を yymmddとして変数yymmddを代入する

例えば、今日の日付が2018/11/30であれば、「181130」に変換することができます。

新しいファイル名を付けるときに役立つので、覚えておくといいです。

2行目|pptfileを「ws1のセルN8の値」と yymmdd の合わせた値にする

pptfileは、これからパワーポイントを新しい名前で保存するときの名称として使います。

ステップ4|パワーポイント(アプリケーション)を起動

Dim ppApp As New PowerPoint.Application
ppApp.Visible = True

1行目|PowerPointで使用するオブジェクト生成

2行目|PowerPointを起動してPCに出力する

ステップ5|パワーポイントファイル「template.pptx」を開く

Dim pptx As PowerPoint.Presentation
Set pptx = ppApp.Presentations.Open(ThisWorkbook.Path & "\template.pptx")

1行目|PowerPointで使用するオブジェクト生成

2行目|pptxとしてエクセルファイルと同じフォルダにある「template.pptx」というパワーポイントファイルを開く

ステップ6|「template.pptx」の一枚目のスライドを操作する

Dim pptxsl As PowerPoint.Slide, obj As Object
Set pptxsl = pptx.Slides(1)

1行目|pptxslをパワーポイントファイルのスライド型、objをオブジェクト型でそれぞれ変数定義する

2行目|pptxslを「template.pptx」の一枚目のスライドとしてセットする

ステップ7|一枚目のスライドにタイトルを作成する

If pptxsl.Shapes.HasTitle Then
    pptxsl.Shapes.title.TextFrame2.TextRange.Text = title
    pptxsl.Shapes.title.TextFrame2.TextRange.Font.Size = 40
End If

1行目|もし、パワーポイントファイルの一枚目にタイトル用の図形があるなら

2行目|パワーポイントファイル一枚目のタイトルをtitleにする

3行目|パワーポイントファイル一枚目のタイトルのフォントサイズを40にする

4行目|If文の終わり(おまじない)

ステップ7終了時点で、以下の状態になります。

f:id:gene320:20181126230926j:plain

ステップ8|一枚目のスライドにテキストボックスを追加する

pptxsl.Shapes.AddTextbox(msoTextOrientationHorizontal, _
Left:=250, Top:=150, Width:=450, Height:=300).TextFrame2.TextRange.Text = _
    subtitle & vbCrLf & vbCrLf & _
    "作成者 " & pic & vbCrLf & vbCrLf & _
    "作成日 " & yymmdd

1行目|パワーポイントファイルの一枚目にテキストボックスを追加する

場所はスライド左上を始点として横に250、縦に150で、テキストボックスの幅を450、高さを300にする

テキストボックスの値は、subtitle (改行)(改行) "作成者 " pic (改行)(改行) yymmddとする

vbCrLfは改行を意味するので、以下のようになります。

f:id:gene320:20181126231421j:plain

なお上記のプログラムは5行ありますが、1行分の意味しかありません。

各行の終わりに 「 _」を入れると次の行に持ち越すことができるからです。

ステップ9|エクセルのシート数を調べる

kazu = Worksheets.Count

1行目|エクセルのシート数をkazuとする(ここではkazu=10となる)

この事例では、エクセルに11個のシートがあるが、0からカウントするため、kazu=10となる

ステップ10|for next構文でエクセルの各シートを一つずつ処理する

For c = 0 To kazu - 1

1行目|for next構文でエクセルのシートを一つずつ処理する

ステップ11|If文でエクセルのシートで「データ」でない場合を調べる

If Worksheets(kazu - c).Name <> "データ" Then
    Worksheets(kazu - c).Activate
    ActiveSheet.ChartObjects.Select
    str = Worksheets(kazu - c).Range("B1").Value

1行目|for next構文でチェックしているエクセルのシート名が"データ"でないなら

2行目|そのシートをアクティブにする(アクティブとは、選択された状態ようなものです)

3行目|アクティブなエクセルシート上のグラフを選択する

4行目|strをWorksheets(kazu - c)のセルB1の値にする

ステップ12|パワーポイントファイルのスライド数を調べる

countSld = pptx.Slides.Count

1行目|counrSldをパワーポイントの総スライド数とする

ステップ13|1ページ目をコピーしてスライドの最後に複製する

pptx.Slides(1).Duplicate.MoveTo (countSld + 1)

1行目|パワーポイントのスライド1枚目をコピーしてスライド最後に複製する

ステップ14|エクセルシートのグラフを画像としてコピーする

ActiveChart.CopyPicture xlScreen, xlPicture
pptx.Slides(countSld + 1).Select

1行目|エクセルのシートのアクテイブチャート(グラフ)を画像(xlPicture)としてコピーする

2行目|パワーポイントの一番最後のスライドを選択する

ステップ15|パワーポイントの最後のスライドにグラフを貼り付ける

pptx.Slides(countSld + 1).Shapes.Paste

1行目|パワーポイントの最後のスライドにグラフを貼り付ける

ステップ15終了時点で、以下の状態になります。

f:id:gene320:20181126231802j:plain

ステップ16|貼り付けたグラフの位置を変更する

With pptx.Slides(countSld + 1).Shapes(pptx.Slides(countSld + 1).Shapes.Count)
    .LockAspectRatio = msoTrue 
    .Top = 100 
    .Left = 130 
    .Width = 700
End With

1行目|Withで「パワーポイントの最後のスライドの図形(ここではグラフ)の」を以下のプラグラムから省略する

2行目|(グラフの)縦横比を固定する

3行目|(グラフの)の位置を上から100にする

4行目|(グラフの)の位置を左から130にする

5行目|(グラフの)横幅を700にする

6行目|Withの終わり

ステップ16終了時点で、以下の状態になります。

f:id:gene320:20181126232221j:plain

ステップ17|最後のスライドのタイトルとフォントサイズを変更する

pptx.Slides(countSld + 1).Shapes.title.TextFrame2.TextRange.Text = str
pptx.Slides(countSld + 1).Shapes.title.TextFrame2.TextRange.Font.Size = 40
Next

1行目|最後のスライドのタイトルをstrにする

2行目|最後のスライドのタイトルのフォントサイズを40にする

ステップ17終了時点で、以下の状態になります。

f:id:gene320:20181126232357j:plain

ステップ18|余分なテキストボックスを削除する

    For Each obj In pptx.Slides(countSld + 1).Shapes
        If obj.Type = msoTextBox Then
            obj.Delete
        End If
    Next
End If

1行目|一番最後のスライドの図形をfor each構文を使って一つずつ処理する

2行目|もし、図形のタイプがテキストボックスだったら

3行目|テキストボックスを削除する

4行目|if文終わりのおまじない( If obj.Type = msoTextBox Then に対応)

5行目|for next構文の終わりのおまじない(For Each obj In pptx.Slides(countSld + 1).Shapes に対応)

6行目|if文終わりのおまじない( ステップ11のIf Worksheets(kazu - c).Name <> "データ" Then に対応)

ステップ18終了時点で、以下の状態になります。

f:id:gene320:20181126232653j:plain

ステップ19|for next構文の繰り返しのおまじない

Next

1行目|for next構文の終わりのおまじない(ステップ10の For c = 0 To kazu - 1 に対応)

貼り付けるグラフの数に応じて、ステップ10~ステップ19を繰り返します。

ステップ20|for next構文の繰り返しのおまじない

    pptx.SaveAs ThisWorkbook.Path & "\" & pptfile & ".pptx"
    ppApp.Quit
    Set ppApp = Nothing
End Sub

1行目|パワーポイントをエクセルファイルと同じフォルダに「pptfile(という変数)」.pptx という名前で新しく保存する

2行目|パワーポイント(のアプリケーション)を閉じる

3行目|ppAppを解放

4行目|プログラムの終わり

プログラムの説明は以上です。

エクセルマクロVBAの始め方・使い方

エクセルマクロVBAの使い方から知りたい人は、以下の記事を読んでみてください。

www.fastclassinfo.com

上記で紹介したプログラムコードをどのように使えば、グラフ作成マクロを使えるようになるのかが分かります。

ぜひ、あなた自身が勉強して、自分で編集してもっといいものを作成できるようになってほしいと思います。

エクセルを自分用に編集アレンジして使いたいなら、エクセルマクロの無料動画で学ぼう

この記事では、グラフの自動作成のマクロについて紹介しました。ここで紹介したマクロを利用すれば、作業の自動化が可能になります。

しかしデメリットもあります。それはカスタムできないことです。

なぜなら、色々な要望が増えるからです。

この動画を見たとき、「もっと○○ができるのでは?」や「ここはなんとかならないのか」と感じる人は少なくないはずです。

例えば、「他の条件を付け加えたい」や「日付毎に条件を変えたい」といった要望が出るかもしれません。

このような要望を満たすには、マクロを勉強して自力でマクロを編集できるようになる必要があります

もし、自力でマクロを編集できるようになれば、今より仕事の効率はグッと上がります。

実際、私も自力でマクロを書けるようになってからは、仕事の生産性が一気に上がりました。

他の人が30分~1時間かけて行う仕事が、ボタン一つで終わらせることができるようになったのです。その結果、周囲からの信頼も増し、仕事で高い評価を得られるようになりました。

ただ、要望に応えるようになるためには、マクロを学ぶ必要があります。

まずは無料でマクロを勉強してみる

ウェブや書籍で勉強すれば、マクロを習得できると考えている人は少なくありません。

しかし、仕事で使えるマクロを習得したいなら、仕事で使える部分に特化した教材で学ぶことをお勧めします。

なぜなら、ウェブや書籍には仕事に関係しない部分まで提供していることが多いからです。

例えば、マクロ初心者なのに配列を学ぼうとする人がいます。実は配列なしでも仕事で使えるマクロを書くことは可能です。

しかし、マクロ初心者ほど「全ての知識が必要だ」と考えて、無駄な学習に時間を使ってしまうのです。詳しくは、こちらの記事で紹介しています。

www.fastclassinfo.com

www.fastclassinfo.com

そこで、私がお勧めするのは仕事に直結するマクロ教材です。とくにお勧めするのは、こちらの無料オンライン動画です。

なぜなら、仕事に直結する部分に絞って、エクセルマクロを学ぶことができるからです。

マクロの作り方・考え方から解説しているので、教材をしっかり学べばここで紹介したマクロをゼロから書けるようになります。

マクロ初心者が、仕事に直結したいマクロを学ぶなら、まずはこちらの無料オンライン動画を試すのがいいです。

興味がある人は、まずは無料でエクセルマクロの勉強を始めてみてください。

もっと学びたいと感じたら、さらに深く勉強をしてみることをお勧めします。