Excel VBAでPowerPointのスライドレイアウトを一括変更する方法

この記事では、Excel VBAを使用してPowerPointのスライドのレイアウトを一括で変更する方法について詳しく解説します。VBAのコード例からその詳細解説、さらに応用例までを網羅していますので、PowerPointのスライド整理に役立ててください。

目次

Excel VBAの基本

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

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

基本的な一括変更の方法

Excel VBAを用いて、PowerPointのスライドのレイアウトを一括変更する方法には以下のようなステップがあります。

1. PowerPointのオブジェクトをVBAで操作可能にする。
2. 必要なスライドやレイアウトの情報を取得する。
3. 一括でレイアウトを変更するコードを実行する。


Sub ChangePPTLayouts()
    Dim pptApp As Object
    Dim pptPresentation As Object
    Dim slide As Object
    
    ' PowerPointを操作するためのオブジェクトを設定
    Set pptApp = CreateObject("PowerPoint.Application")
    Set pptPresentation = pptApp.Presentations.Open("C:\path\to\your\presentation.pptx")
    
    ' 全てのスライドのレイアウトを変更
    For Each slide In pptPresentation.Slides
        slide.Layout = 2 ' 2は「タイトルと内容」のレイアウトを示しています
    Next slide
    
    pptPresentation.Save
    pptPresentation.Close
    Set pptPresentation = Nothing
    Set pptApp = Nothing
End Sub

このコードは、指定されたPowerPointファイルのすべてのスライドのレイアウトを「タイトルと内容」のレイアウト(番号2)に変更します。

応用例

応用例1: 特定のレイアウトのスライドだけを変更

特定のレイアウトを持つスライドだけを変更する場合、以下のようにコードを修正します。


Sub ChangeSpecificLayouts()
    Dim pptApp As Object
    Dim pptPresentation As Object
    Dim slide As Object

    Set pptApp = CreateObject("PowerPoint.Application")
    Set pptPresentation = pptApp.Presentations.Open("C:\path\to\your\presentation.pptx")
    
    ' 特定のレイアウト(例: 5)のスライドのレイアウトを変更
    For Each slide In pptPresentation.Slides
        If slide.Layout = 5 Then
            slide.Layout = 2
        End If
    Next slide
    
    pptPresentation.Save
    pptPresentation.Close
    Set pptPresentation = Nothing
    Set pptApp = Nothing
End Sub

応用例2: 複数のプレゼンテーションファイルを一括処理

複数のPowerPointファイルのスライドレイアウトを一括で変更する場合のコードです。


Sub ChangeMultiplePPTsLayouts()
    Dim pptApp As Object
    Dim pptPresentation As Object
    Dim slide As Object
    Dim file As String, folderPath As String
    folderPath = "C:\path\to\your\folder\"
    file = Dir(folderPath & "*.pptx")
    Set pptApp = CreateObject("PowerPoint.Application")
    Do While file <> ""
        Set pptPresentation = pptApp.Presentations.Open(folderPath & file)
        
        For Each slide In pptPresentation.Slides
            slide.Layout = 2
        Next slide
        
        pptPresentation.Save
        pptPresentation.Close
        Set pptPresentation = Nothing
        file = Dir
    Loop
    Set pptApp = Nothing
End Sub

応用例3: 特定のテキストを持つスライドのレイアウトを変更

スライド内のテキストを基にレイアウトを変更する場合のコードです。


Sub ChangeLayoutByText()
    Dim pptApp As Object
    Dim pptPresentation As Object
    Dim slide As Object
    Dim shape As Object
    Dim targetText As String

    targetText = "特定のテキスト"
    Set pptApp = CreateObject("PowerPoint.Application")
    Set pptPresentation = pptApp.Presentations.Open("C:\path\to\your\presentation.pptx")
    
    For Each slide In pptPresentation.Slides
        For Each shape In slide.Shapes
            If shape.HasTextFrame Then
                If InStr(shape.TextFrame.TextRange.Text, targetText) > 0 Then
                    slide.Layout = 2
                    Exit For
                End If
            End If
        Next shape
    Next slide
    
    pptPresentation.Save
    pptPresentation.Close
    Set pptPresentation = Nothing
    Set pptApp = Nothing
End Sub

まとめ

PowerPointのスライドのレイアウトを効率よく一括変更するには、Excel VBAが大変有効です。上記の基本的な方法や応用例を活用して、PowerPointのプレゼンテーションの整理・編集をよりスムーズに行いましょう。

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

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

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

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

コメント

コメントする

目次