Excel VBAを活用してPowerPointの図形の塗りつぶし色を一括変更する方法

この記事では、Excel VBAを使用してPowerPointのプレゼンテーション内のすべての図形の塗りつぶし色を一括で変更する方法について詳しく説明します。初心者向けに具体的なコード例とその解説、さらに3つの応用例を含めて紹介します。

目次

Excel VBAの基本

Excel VBA(Visual Basic for Applications)は、Microsoft Excelに組み込まれたプログラミング言語です。これを用いると、単純作業の自動化だけでなく、高度なデータ分析やレポート作成も可能になります。

そもそも、どこにVBAコードを書いて、どう実行すれば良いのか分からない場合は、以下の記事をご参照ください。

PowerPoint図形の塗りつぶし色の変更の基本

PowerPointには数多くの図形やオブジェクトが含まれており、これらのデザインを変更する作業は時間がかかる場合があります。特に多数のスライドや図形がある場合、一つ一つ手作業で変更するのは非効率的です。Excel VBAを使用することで、この作業を自動化し、効率よく一括で変更することができます。


Sub ChangeFillColor()
    Dim pptApp As Object
    Dim pptPresentation As Object
    Dim slide As Object
    Dim shape As Object

    ' PowerPointのアクティブなプレゼンテーションを取得
    Set pptApp = GetObject(, "PowerPoint.Application")
    Set pptPresentation = pptApp.ActivePresentation

    ' すべてのスライドのすべての図形の塗りつぶし色を変更
    For Each slide In pptPresentation.Slides
        For Each shape In slide.Shapes
            If shape.HasTextFrame = False Then 'テキストフレームを持たない図形だけを対象とする
                shape.Fill.ForeColor.RGB = RGB(255, 0, 0) '赤色に変更
            End If
        Next shape
    Next slide
End Sub

コードの解説

上記のVBAコードは、アクティブなPowerPointプレゼンテーションの全ての図形の塗りつぶし色を一括で赤色に変更するものです。

1. `pptApp`および`pptPresentation`オブジェクトを初期化してPowerPointのアクティブなプレゼンテーションを取得します。
2. `For Each`ループを使って、すべてのスライドおよびそのスライド内の図形に対してループ処理を行います。
3. `shape.HasTextFrame = False`の条件でテキストフレームを持たない図形のみを対象としています。これにより、テキストボックスなどのテキストを含む図形の色は変更されません。
4. `shape.Fill.ForeColor.RGB = RGB(255, 0, 0)`で、図形の塗りつぶし色を赤に変更しています。

応用例

応用例1: 特定の色の図形だけを変更する

特定の色の図形(例:青色)だけを他の色(例:緑色)に変更したい場合のコード例を紹介します。


Sub ChangeSpecificColor()
    Dim pptApp As Object
    Dim pptPresentation As Object
    Dim slide As Object
    Dim shape As Object

    Set pptApp = GetObject(, "PowerPoint.Application")
    Set pptPresentation = pptApp.ActivePresentation

    For Each slide In pptPresentation.Slides
        For Each shape In slide.Shapes
            If shape.HasTextFrame = False Then
                If shape.Fill.ForeColor.RGB = RGB(0, 0, 255) Then '青色の図形を対象とする
                    shape.Fill.ForeColor.RGB = RGB(0, 255, 0) '緑色に変更
                End If
            End If
        Next shape
    Next slide
End Sub

このコードは、すべてのスライド内の青色の図形の塗りつぶし色を緑色に一括で変更します。

応用例2: 図形の塗りつぶし色をランダムに変更する

プレゼンテーションを華やかにするために、各図形の塗りつぶし色をランダムな色に変更するコード例です。


Sub ChangeRandomColor()
    Dim pptApp As Object
    Dim pptPresentation As Object
    Dim slide As Object
    Dim shape As Object

    Set pptApp = GetObject(, "PowerPoint.Application")
    Set pptPresentation = pptApp.ActivePresentation

    For Each slide In pptPresentation.Slides
        For Each shape In slide.Shapes
            If shape.HasTextFrame = False Then
                shape.Fill.ForeColor.RGB = RGB(Int(Rnd() * 256), Int(Rnd() * 256), Int(Rnd() * 256))
            End If
        Next shape
    Next slide
End Sub

このコードは、各図形の塗りつぶし色をランダムなRGB色に変更します。

応用例3: 図形の線の色も一括で変更する

図形の塗りつぶし色と同時に、線の色も

一括で変更するコード例を紹介します。


Sub ChangeFillColorAndLineColor()
    Dim pptApp As Object
    Dim pptPresentation As Object
    Dim slide As Object
    Dim shape As Object

    Set pptApp = GetObject(, "PowerPoint.Application")
    Set pptPresentation = pptApp.ActivePresentation

    For Each slide In pptPresentation.Slides
        For Each shape In slide.Shapes
            If shape.HasTextFrame = False Then
                shape.Fill.ForeColor.RGB = RGB(255, 0, 0) '赤色に変更
                shape.Line.ForeColor.RGB = RGB(0, 0, 255) '線の色を青色に変更
            End If
        Next shape
    Next slide
End Sub

このコードは、図形の塗りつぶし色を赤にし、線の色を青に一括で変更します。

まとめ

Excel VBAを使用することで、PowerPointのプレゼンテーション内の図形のデザイン変更作業を大幅に効率化することができます。上述の基本的なコードや応用例を参考にして、自分のニーズに合わせたカスタマイズを行いましょう。

VBAも良いけどパワークエリも良い

VBAの解説をしてきましたが、VBAは正直煩雑でメンテナンス性が悪いです。最近はモダンExcelと呼ばれるパワークエリやパワーピボットへのシフトが進んできています。本サイトでもパワークエリの特集をしており、サンプルデータを含む全11回の学習コンテンツでパワークエリを習得することができます。

クリックするとパワークエリの全11講座が表示されます。

パワーピボットの記事はありません。興味がある場合は、書籍で学んでみてください

コメント

コメントする

目次