(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【PowerPointVBA】複数ファイルのpptxファイルをマクロで結合する

スポンサーリンク

はじめに

環境情報
  • PowerPoint:Microsoft Office 365 2021年

事前準備

結合したいファイルと空のpptmファイルを以下のように同一フォルダに並べます。

$ ls
01.pptx  02.pptx  03.pptx  04.pptx  05.pptx  06.pptx  07.pptx  08.pptx  09.pptx  10.pptx  testmacro.pptm

ファイルエクスプローラー上では以下のようになっています。
f:id:mtiit:20211126155813p:plain

この状態でpptmファイルのマクロを開き、以下のVBAコードをコピペします。
尚、ファイルは名前順に取得されるので順番はファイル名に依存する点はご注意ください。

VBAコード

Sub InsertAllSlides()
    Dim vArray() As String
    Dim x As Long
    EnumerateFiles ActivePresentation.Path & "\", "*.PPT", vArray
    With ActivePresentation
        For x = 1 To UBound(vArray)
            If Len(vArray(x)) > 0 Then
                Debug.Print vArray(x)
                .Slides.InsertFromFile vArray(x), .Slides.Count
            End If
        Next
    End With
End Sub
Sub EnumerateFiles(ByVal sDirectory As String, _
    ByVal sFileSpec As String, _
    ByRef vArray As Variant)
    Dim sTemp As String
    ReDim vArray(1 To 1)
    sTemp = Dir$(sDirectory & sFileSpec)
    Do While Len(sTemp) > 0
        If sTemp <> ActivePresentation.Name Then
            ReDim Preserve vArray(1 To UBound(vArray) + 1)
            Debug.Print ActivePresentation.Name
            vArray(UBound(vArray)) = sDirectory & sTemp
        End If
        sTemp = Dir$
    Loop
End Sub

上記を動かすとイミディエイトウィンドウにファイルが名前順に記載され、この順序でスライドが結合されています。

C:\Users\xx\01.pptx
C:\Users\xx\02.pptx
C:\Users\xx\03.pptx
C:\Users\xx\04.pptx
C:\Users\xx\05.pptx
C:\Users\xx\06.pptx
C:\Users\xx\07.pptx
C:\Users\xx\08.pptx
C:\Users\xx\09.pptx
C:\Users\xx\10.pptx

パワーポイントに戻ると全スライドがファイル名に従って挿入されています。

終わりに

マクロを開いているパワーポイントファイル(ActivePresentation.Name)にフォルダ上にあるPPTXのスライドを順次挿入していくシンプルなものですが、結合ファイルが多い場合には有効なので覚えておくと役立つと思います。