はじめに
環境情報
- 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
ファイルエクスプローラー上では以下のようになっています。
この状態で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のスライドを順次挿入していくシンプルなものですが、結合ファイルが多い場合には有効なので覚えておくと役立つと思います。